Hi Willem, Thanks for help. I understood that I was incorrect and was using not an appropriate tool for soap over jms. I succeeded in configuring cxf to use jms transport using the following configuration
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxf" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:camel="http://cxf.apache.org/transports/camel" xmlns:echo="http://www.springframework.org/spring-ws/samples/echo" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://cxf.apache.org/transports/camel http://cxf.apache.org/transports/camel.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-jms.xml" /> <cxf:cxfEndpoint id="echoService" address="jms://" endpointName="echo:EchoSoap11" serviceName="echo:EchoService" wsdlURL="echo.wsdl"> <cxf:properties> <entry key="dataFormat" value="PAYLOAD" /> </cxf:properties> <cxf:features> <bean class="org.apache.cxf.transport.jms.JMSConfigFeature"> <property name="jmsConfig" ref="jmsConfig"/> </bean> </cxf:features> </cxf:cxfEndpoint> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="file:c:/workspace/temp/cxf/req" /> <inOut uri="cxf:bean:echoService"/> <to uri="log:ru.troika.cto?level=INFO" /> <to uri="file:c:/workspace/temp/cxf/resp"/> </route> </camelContext> <bean id="jmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration"> <property name="connectionFactory" ref="jmsConnectionFactory"/> <property name="useJms11" value="true"/> <property name="targetDestination" value="EchoRequest"/> <property name="replyDestination" value="EchoReply"/> <property name="messageType" value="byte"/> </bean> <bean id="jmsConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> </property> </bean> </beans> It's interesting that it's possible to use the following configuration too: <cxf:cxfEndpoint id="echoService" address="camel://activemq:queue:EchoRequest?jmsMessageType=Bytes&replyTo=EchoReply&useMessageIDAsCorrelationID=true" endpointName="echo:EchoSoap11" serviceName="echo:EchoService" wsdlURL="echo.wsdl"> <cxf:properties> <entry key="dataFormat" value="PAYLOAD" /> </cxf:properties> </cxf:cxfEndpoint> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="file:c:/workspace/temp/cxf/req" /> <inOut uri="cxf:bean:echoService"/> <to uri="log:org.test?level=INFO" /> <to uri="file:c:/workspace/temp/cxf/resp"/> </route> </camelContext> <camel:conduit name="{http://www.springframework.org/spring-ws/samples/echo}EchoSoap11.camel-conduit"> <camel:camelContextRef>camel</camel:camelContextRef> </camel:conduit> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="brokerURL" value="tcp://localhost:61616"/> </bean> Best Regards, Sergey Zhemzhitsky -----Original Message----- From: Willem Jiang [mailto:[email protected]] Sent: Tuesday, April 26, 2011 3:28 PM To: [email protected] Subject: Re: Camel: SOAP over JMS Hi, If you want to use the SOAP over JMS, you don't need to use the camel transport for CXF. Did you have a chance to try to create pure CXF with SOAP over JMS? Willem On 4/26/11 2:51 PM, Zhemzhitsky Sergey wrote: > Hi there, > > I'm trying to configure SOAP over JMS by means of camel, cfx, activemq and > servicemix (apache-servicemix-4.3.1-fuse-01-09). > > Here is documentation http://camel.apache.org/camel-transport-for-cxf.html > I'm using. > > My configuration file looks like this > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:cxf="http://camel.apache.org/schema/cxf" > xmlns:jaxws="http://cxf.apache.org/jaxws" > xmlns:soap="http://cxf.apache.org/bindings/soap" > xmlns:echo="http://www.springframework.org/spring-ws/samples/echo" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd > http://camel.apache.org/schema/cxf > http://camel.apache.org/schema/cxf/camel-cxf.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd > "> > > <import resource="classpath:META-INF/cxf/cxf.xml" /> > <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" > /> > > <bean > class="org.apache.camel.component.cxf.transport.CamelTransportFactory"> > <property name="bus" ref="cxf" /> > <property name="camelContext" ref="camel" /> > <property name="transportIds"> > <list> > <value>http://cxf.apache.org/transports/camel</value> > </list> > </property> > </bean> > > <cxf:cxfEndpoint id="echoService" > address="camel:activemq:queue:EchoRequest" > endpointName="echo:EchoSoap11" serviceName="echo:EchoService" > wsdlURL="echo.wsdl"> > <cxf:properties> > <entry key="dataFormat" value="PAYLOAD" /> > </cxf:properties> > </cxf:cxfEndpoint> > > <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> > <route> > <from uri="file:c:/workspace/temp/cxf/req" /> > <inOut > uri="activemq:queue:EchoRequest?jmsMessageType=Bytes&replyTo=EchoReply&useMessageIDAsCorrelationID=true"/> > <to uri="log:org.testapp?level=INFO" /> > <to uri="file:c:/workspace/temp/cxf/resp"/> > </route> > </camelContext> > > <bean id="activemq" > class="org.apache.activemq.camel.component.ActiveMQComponent"> > <property name="brokerURL" value="tcp://localhost:61616"/> > </bean> > > </beans> > > From the configuration - I'm trying to invoke CXF services when > sending messages to activemq. Messages are SOAP payloads and look like > this > > <echo:echoRequest > xmlns:echo="http://www.springframework.org/spring-ws/samples/echo">hel > lo</echo:echoRequest> > > I'm expecting the payload to become a SOAP envelope > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:echo="http://www.springframework.org/spring-ws/samples/echo"> > <soapenv:Header/> > <soapenv:Body> > <echo:echoRequest>hello</echo:echoRequest> > </soapenv:Body> > </soapenv:Envelope> > > But it does not happen and there is only payload in the queue and it seems > that CXF is not attached to the acvivemq endpoint. > > So the question is how to configure cxf+camel+activemq in the > apache-servicemix-4.3.1-fuse-01-09 to create a fully functional SOAP envelope > when sending only a payload into the queue? > > > Best Regards, > Sergey Zhemzhitsky > > > _______________________________________________________ > > The information contained in this message may be privileged and conf idential > and protected from disclosure. If you are not the original intended > recipient, you are hereby notified that any review, retransmission, > dissemination, or other use of, or taking of any action in reliance upon, > this information is prohibited. If you have received this communication in > error, please notify the sender immediately by replying to this message and > delete it from your computer. Thank you for your cooperation. Troika Dialog, > Russia. > If you need assistance please contact our Contact Center (+7495) 258 > 0500 or go to www.troika.ru/eng/Contacts/system.wbp > > -- Willem ---------------------------------- FuseSource Web: http://www.fusesource.com Blog: http://willemjiang.blogspot.com (English) http://jnn.javaeye.com (Chinese) Twitter: willemjiang Connect at CamelOne May 24-26 The Open Source Integration Conference http://camelone.com _______________________________________________________ The information contained in this message may be privileged and conf idential and protected from disclosure. If you are not the original intended recipient, you are hereby notified that any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information is prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and delete it from your computer. Thank you for your cooperation. Troika Dialog, Russia. If you need assistance please contact our Contact Center (+7495) 258 0500 or go to www.troika.ru/eng/Contacts/system.wbp
