Hi,
I guess the problem could be that the namespace in the conduit name is
missing. The problem with conduits in my opinion is that it is too easy
to have a spelling error.
If you use the conduit then you do not need the config in the wsdl.
I prefer to use the JmsConfigFeature. See:
https://cwiki.apache.org/CXF20DOC/using-the-jmsconfigfeature.html
It is easier to configure and matches typical spring configs.
Gretings
Christian
Am 04.05.2010 17:32, schrieb Nguyen Tien Luong:
My old my is not readable, so I resend it :p
Hi,
In context of my project, I have to configure CXF in using JMS/Joram. My example bases on jms_queue 's demonstration.
My look for this part: http://cxf.apache.org/docs/jms-transport.html
The first way with WSDL, it works well, client can send the request to request queue, and get the answer from replyWSDL queue :
<wsdl:service name="JMSGreeterService">.
<wsdl:port binding="tns:JMSGreeterPortBinding" name="GreeterPort">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="cf"
jndiDestinationName="request"
jndiReplyDestinationName="replyWSDL">
<jms:JMSNamingProperty name="java.naming.factory.initial"
value="fr.dyade.aaa.jndi2.client.NamingContextFactory"/>
<jms:JMSNamingProperty name="java.naming.factory.host" value="localhost"/>
<jms:JMSNamingProperty name="java.naming.factory.port" value="16400"/>
</jms:address>
<jms:clientConfig useConduitIdSelector="false"/>
</wsdl:port>
</wsdl:service>
I tried to do the same things with the configuration of Spring but it didn't
work.
My beans.xml is like that, and it's loaded when the client starts:
<beans xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jms="http://cxf.apache.org/transports/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://cxf.apache.org/transports/jms
http://cxf.apache.org/schemas/configuration/jms.xsd">
<context:component-scan base-package="demo.jms_greeter.client"/>
........
<!-- CXF Configuration -->
<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" />
........
<jms:conduit name="{JMSGreeterService}GreeterPort.jms-conduit">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="cf"
jndiDestinationName="request"
jndiReplyDestinationName="replyWSDL">
<jms:JMSNamingProperty name="java.naming.factory.initial"
value="fr.dyade.aaa.jndi2.client.NamingContextFactory"/>
<jms:JMSNamingProperty name="java.naming.factory.host"
value="localhost"/>
<jms:JMSNamingProperty name="java.naming.factory.port"
value="16400"/>
</jms:address>
</jms:conduit>
........
</beans>
So my questions are:
- Did I miss some points in beans.xml in order to make it runs?
- Can I delete the config in WSDL file when I use spring bean's config?
- How jms:conduit works? Each client uses its own instance of JMSConduit to
transfer the message (when there are many clients using the same WSDL)
Thanks in advanced :x
=========================================================================
NGUYEN Tien Luong | M2PGI - UFRIMAG
13 Rue Blanche MONIER | Tel : 06.45.42.46.33
38000 GRENOBLE | http://tienluong.info