Return-Path: Delivered-To: apmail-cxf-dev-archive@www.apache.org Received: (qmail 668 invoked from network); 7 Jan 2011 06:52:29 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Jan 2011 06:52:29 -0000 Received: (qmail 19004 invoked by uid 500); 7 Jan 2011 06:52:29 -0000 Delivered-To: apmail-cxf-dev-archive@cxf.apache.org Received: (qmail 18666 invoked by uid 500); 7 Jan 2011 06:52:29 -0000 Mailing-List: contact dev-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list dev@cxf.apache.org Received: (qmail 18656 invoked by uid 99); 7 Jan 2011 06:52:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jan 2011 06:52:28 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [62.75.158.78] (HELO mail.liquid-reality.de) (62.75.158.78) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jan 2011 06:52:21 +0000 Received: from [10.0.0.100] (HSI-KBW-091-089-018-199.hsi2.kabelbw.de [91.89.18.199]) by mail.liquid-reality.de (Postfix) with ESMTP id 76788B38010 for ; Fri, 7 Jan 2011 06:52:00 +0000 (UTC) Message-ID: <4D26B80E.4000001@die-schneider.net> Date: Fri, 07 Jan 2011 07:51:58 +0100 From: Christian Schneider User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7 MIME-Version: 1.0 To: dev@cxf.apache.org Subject: Re: [Discuss] Interop problem between soap/jms spec support in cxf and camel jms References: <4D25EEEC.8010308@die-schneider.net> <201101061537.44722.dkulp@apache.org> <4D265ADE.3070002@gmail.com> In-Reply-To: <4D265ADE.3070002@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org Hi Willem and Dan, I guess this is a way to make the Camel - CXF combination soap/jms compliant. The case I am more concerned about is if you setup a soap/jms compliant cxf service it will not interoperate with other soap/jms implementations that are not compliant. As of now I assume almost all other implementations are not compliant. So my proposal is to introduce a switch that allows the cxf implementation to disable the checks that cause these problems. Of cause cxf is not absolutely compliant to the spec in this case but I think the customers will not care too much about this. Best regards Christian Am 07.01.2011 01:14, schrieb Willem Jiang: > Yes, set the transport ID can do the trick. > Here is the CXFEndpoint configuration which can be used to set up the > camel-cxf endpoint. > > address="jms:jndi:dynamicQueues/request" > transportId="http://www.w3.org/2010/soapjms/" > serviceClass="org.apache.camel.component.cxf.HelloService"> > > > Willem > > On 1/7/11 4:37 AM, Daniel Kulp wrote: >> >> Christian, >> >> I need to check this a bit more, but if the transport ID is set to >> the CXF >> transports's ID and not the "soap" ID's, then the SOAP/JMS specific >> interceptors aren't added and thus that validation and stuff would >> not occur. >> Is there a way on the Camel side to specify the transport ID to use? >> >> Dan >> >> >> On Thursday 06 January 2011 11:33:48 am Christian Schneider wrote: >>> 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 >> > > -- ---- http://www.liquid-reality.de