I have the example running ... phew ... That was some work. After some cleanup I will write a wiki page about my example.

In fact once all is set up it is quite easy. Only the fact that you have to connect jms:conduit and service by the endpoint name is not very intuitive. I would like to have a property inside the JaxWsServerFactoryBean where I can simply set the transport to a jms conduit. This would be much clearer.

In the dev list I read that someone works on the spring jms config.. This would be much help.

I used the following cxf.xml and code for server and client.

Best regards and thanks for your help,

Christian

cxf.xml
--------------------------
<?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://cxf.apache.org/core";
   xmlns:soap="http://cxf.apache.org/bindings/soap";
   xmlns:jaxws="http://cxf.apache.org/jaxws";
   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.0.xsd
   http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schema/bindings/soap.xsd
   http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/jms http://cxf.apache.org/schemas/configuration/jms.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-local.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-jms.xml" />
<cxf:bus>
       <cxf:features>
           <cxf:logging/>
       </cxf:features>
   </cxf:bus>

   <jms:conduit
       name="{http://service.test/}IHelloPort.jms-conduit";>
       <!--
       <jms:clientConfig clientReceiveTimeout="500"
           messageTimeToLive="500" />
       <jms:runtimePolicy messageType="binary" />
       <jms:sessionPool lowWaterMark="10" highWaterMark="5000" />
       -->
       <jms:address destinationStyle="queue"
           jndiConnectionFactoryName="ConnectionFactory"
           jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue"
           connectionUserName="testUser" connectionPassword="testPassword">
           <jms:JMSNamingProperty name="java.naming.factory.initial"
value="org.apache.activemq.jndi.ActiveMQInitialContextFactory" />
<jms:JMSNamingProperty name="java.naming.provider.url"
               value="tcp://localhost:61616" />
       </jms:address>
   </jms:conduit>
<jms:destination
       name="{http://service.test/}IHelloPort.jms-destination";>
       <!--
       <jms:clientConfig clientReceiveTimeout="500"
           messageTimeToLive="500" />
       <jms:runtimePolicy messageType="binary" />
       <jms:sessionPool lowWaterMark="10" highWaterMark="5000" />
       -->
       <jms:address destinationStyle="queue"
           jndiConnectionFactoryName="ConnectionFactory"
           jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue"
           connectionUserName="testUser" connectionPassword="testPassword">
           <jms:JMSNamingProperty name="java.naming.factory.initial"
value="org.apache.activemq.jndi.ActiveMQInitialContextFactory" />
            <jms:JMSNamingProperty name="java.naming.provider.url"
               value="tcp://localhost:61616" />
       </jms:address>
   </jms:destination>

</beans>
-------------------

Server:
-----------------------
Object implementor = new Hello();
       JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
       svrFactory.setServiceClass(IHello.class);
       svrFactory.setAddress("jms://");
       svrFactory.setServiceBean(implementor);
       svrFactory.getInInterceptors().add(new LoggingInInterceptor());
       svrFactory.getOutInterceptors().add(new LoggingInInterceptor());
       svrFactory.create();
-------------------

Client:
--------------------------
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
       factory.getInInterceptors().add(new LoggingInInterceptor());
       factory.getOutInterceptors().add(new LoggingInInterceptor());
       factory.setServiceClass(IHello.class);
       factory.setAddress("jms://");
       IHello client = (IHello) factory.create();
---------------------------

--

Christian Schneider
---
http://www.liquid-reality.de

Reply via email to