Hi all,
I just did an interop test between the soap/jms spec support in
jms and
camel-jms with camel-cxf transport.
When my camel client sends a message to the cxf jms spec server
this is
blocked as there is no ContentType property set. (See exception
below).
I guess this will also happen with most other implementations
that do
not yet support the soap/jms spec.
the problem is that the sepc requires that a fault is sent if the
property is missing. So cxf is spec compliant but incompatible
with old
implementations.
So I think we should have a switch that controls if the spec
asssertion
should run or not. (if we don“t already have one that I overlooked).
The
switch could be set to be strict by default so we are compliant by
default.
what do you think ?
Best regards
Christian
-----
06.01.2011 16:47:27 org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNUNG: Interceptor for
{http://talend.com/examples/jms-greeter}JMSGreeterService has thrown
exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Missing ContentType.
at
org.apache.cxf.binding.soap.jms.interceptor.SoapFaultFactory.createSoap11Fa
ult(SoapFaultFactory.java:58) at
org.apache.cxf.binding.soap.jms.interceptor.SoapFaultFactory.createFault(So
apFaultFactory.java:48) at
org.apache.cxf.binding.soap.jms.interceptor.SoapJMSInInterceptor.createFaul
t(SoapJMSInInterceptor.java:197) at
org.apache.cxf.binding.soap.jms.interceptor.SoapJMSInInterceptor.checkConte
ntType(SoapJMSInInterceptor.java:162) at
org.apache.cxf.binding.soap.jms.interceptor.SoapJMSInInterceptor.handleMess
age(SoapJMSInInterceptor.java:49) at
org.apache.cxf.binding.soap.jms.interceptor.SoapJMSInInterceptor.handleMess
age(SoapJMSInInterceptor.java:38) at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
n.java:255) at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO
bserver.java:113) at
org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:2
17) at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeL
istener(AbstractMessageListenerContainer.java:535) at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeLis
tener(AbstractMessageListenerContainer.java:495) at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecute
Listener(AbstractMessageListenerContainer.java:467) at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.do
ReceiveAndExecute(AbstractPollingMessageListenerContai ner.java:325)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.re
ceiveAndExecute(AbstractPollingMessageListenerContaine r.java:263)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
geListenerInvoker.invokeListener(DefaultMessageListene
rContainer.java:1058)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
geListenerInvoker.executeOngoingLoop(DefaultMessageLis
tenerContainer.java:1050)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessa
geListenerInvoker.run(DefaultMessageListenerContainer. java:947)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.cxf.binding.soap.jms.interceptor.JMSFault:
Missing
ContentType.
at
org.apache.cxf.binding.soap.jms.interceptor.JMSFaultFactory.createFault(JMS
FaultFactory.java:98) at
org.apache.cxf.binding.soap.jms.interceptor.JMSFaultFactory.createMissingCo
ntentTypeFault(JMSFaultFactory.java:64) at
org.apache.cxf.binding.soap.jms.interceptor.SoapJMSInInterceptor.checkConte
ntType(SoapJMSInInterceptor.java:159) ... 14 more