Jax-WS Java First with jms Transport has been edited by Christian Schneider (Oct 26, 2007).

Change summary:

added descriptions and code snippets

(View changes)

Content:

Download JAX-WS java first sample showing maven build, http and jms transport.

This example works almost the same as th JAX WS Java First Example with http. The only two things that are different is that you configure the jms:conduit (JMS Config for client) and jms:endpoint(JMS Config for server) in the jms.xml. This file will be loaded automatically when cxf starts.

Things to consider when doing the jms config:

  • name the jms:conduit like the client endpoint name + jms.conduit
  • name the jms:endpoint like the server endpoint name + jms.endpoint

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.

You can download the complete example above. Additionally you need the activemq binaries. Start activemq before testing the service. There is no configuration required.

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();

Reply via email to