Hi Sergey,
I think you are mixing the camel transport for cxf and the camel cxf
endpoint in your config. I have some experience how to use the camel
transport for cxf which I think is the cleaner alternative anyway.
You already have configured the CamelTransporFactory. Next you should
define an ordinary CXF Endpoint using regular CXF configs as if no camel
was involved. The only thing you should do different is to set the
address to
address="camel:direct:yourendpointname". This makes the CXF endpoint
available as a direct endpoint for camel. Next you can offer this on jms by:
<from uri="activemq:queue:EchoRequest"/>
<to uri="direct:yourendpointname"/>
This is the config you need on the server side.
On the client side you do a similar thing.
You can find a complete working example in the Talend Integration
Factory examples. Talend Integration Factory is very similar to
servicemix. It uses Karaf, Camel and CXF. So the example also applies to
servicemix.
http://www.talend.com/download.php#IF
On the lower part of the website you can open Documentation and
Examples. There you find the integration factory examples. The example
you need is jaxws-jms.
While it is possible to run the code in servicemix I would advise to
first try standalone as OSGi is an additional layer of complexity where
stuff can go wrong. If you need any more help feel free to write to the
list again.
Best regards
Christian
Am 26.04.2011 08:51, schrieb Zhemzhitsky Sergey:
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">hello</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
--
----
http://www.liquid-reality.de