cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Schneider <ch...@die-schneider.net>
Subject Re: Configuring CXF with JMS using a JNDI resource
Date Wed, 15 Sep 2010 06:54:30 GMT
  Hi Jeff,

sorry for replying so late.

For the connection factory you should use a jndi lookup like described 
in the spring documentation:

<jee:jndi-lookup id="*connectionFactory*" jndi-name="jndi name for the connectionfactory"/>

You will not need a Wrapper for the factory.

To resolve the destinations via jndi you simply set the 
destinationResolver in the JmsConfiguration to a spring 
JndiDestinationResolver. So you can use jndi names for all destinations 
and spring will do the lookup.
http://www.jarvana.com/jarvana/view/org/springframework/spring/1.2.9/spring-1.2.9-javadoc.jar!/org/springframework/jms/support/destination/JndiDestinationResolver.html

You will not need the  JNDIConfiguration from cxf. This is mainly used 
internally if you configure jms using the wsdl. I am not exactly sure 
how you define the Jndi config in spring but it should be described in 
the spring documentations. In any case by injecting the 
connectionFactory and destinationResolver like described above you 
should be able to use plain spring jms config stuff.

I hope I could help you a little. I think we do not yet have a nice 
example for this. If you have more problems you can post your config and 
I will dig more into it.

Best Regards

Christian


Am 14.09.2010 01:31, schrieb Jeffrey Knight:
> Hello
>
> I've developed a CXF service that uses JMS transport. My configuration
> [1] is all in the applicationContext.xml rather than WSDL or in the
> code as part of the @WebService.
>
> Now, instead of targeting the JMS directly, I want to use a JNDI
> resource defined in WebSphere.
> I haven't been able to find any documentation on how to do this with
> CXF (but I keep finding information on "<jms:conduit" and
> "<jms:destination"
> configurations which I believe have been superseded by the JMSConfigFeature).
>
> I'm expecting that I will NOT need the tcp://... broker url, since
> that's already configured in the JNDI resource itself.
> I should only need:
> - JNDI name (as configured in WebSphere)
> - targetDestination (the JNDI name of the target queue)
> - replyDestination (then JNDI name of the target queue)
> - username (optional)
> - password (optional).
>
> But I'm confused about the "wrapped connection factory" and
> org.apache.cxf.transport.jms.JNDIConfiguration pieces.
>
> Where does the JNDI configuration go, and what parameters do I need?
>
> <jaxws:endpoint
>       xmlns:batch="urn://my.namespace.here" id="MyId"
>       address="jms://" transportId="http://cxf.apache.org/transports/jms"
>       serviceName="ns1:MyService"
>       endpointName="ns1:MyPort"	
>       implementor="com.some.path.MyImpl"
> wsdlLocation="jar:file:WEB-INF/lib/MyWebServiceContracts.jar!/some/path/My.wsdl">
>       <jaxws:features>
>            <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
> 	<property name="jmsConfig" ref="jmsConfig" />
>            </bean>
> 	</jaxws:features>
> </jaxws:endpoint>
>
> <bean id="jmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration">
>
>       <!-- Do I need a wrapped connection factory to access a JNDI
> resource ? -->
>       <property name="connectionFactory" ref="wrappedConnectionFactory" />
>
>       <!-- These should be the JNDI names of the queues ... -->
>       <property name="targetDestination" value="myRequestQueue"/>
>       <property name="replyDestination" value="myResponseQueue"/>
>
>       <!-- I'm guessing I'll need this ... -->
>       <property name="jndiConfig" ref="jndiConfig" />
> </bean>
>
> <!-- Maybe I don't need the wrapped connection at all for a JNDI-JMS
> config ? -->
> <bean id="wrappedConnectionFactory"
> class="org.springframework.jms.connection.SingleConnectionFactory">
>       <property name="targetConnectionFactory">
>
> 	<!-- Shouldn't need this: the JNDI resource handles this. So maybe I
> don't need this wrapped factory ? -->
> 	<!-- bean class="org.apache.activemq.ActiveMQConnectionFactory">
> 		<property name="brokerURL" value="tcp://localhost:61616" />
> 	</bean -->
>       </property>
> </bean>
>
> <!-- Is this where the JNDI name belongs? -->
> <bean id="jndiConfig" class="org.apache.cxf.transport.jms.JNDIConfiguration">
>       <property name="environment">
>            <props>
>                 <prop
> key="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</prop>
>
>                 <!-- does the name of the JNDI resource go here ?? -->
>
>                 <!-- Shouldn't need this: the JNDI resource handles this -->
>                 <!-- prop
> key="java.naming.provider.url">tcp://localhost:61616</prop -->
>            </props>
>       </property>
> </bean>
>
>
>
> [2] Current applicationContext.xml, targeting the message queue directly (works)
>
> <jaxws:endpoint
>       xmlns:batch="urn://my.namespace.here" id="MyId"
>       address="jms://" transportId="http://cxf.apache.org/transports/jms"
>       serviceName="ns1:MyService"
>       endpointName="ns1:MyPort"	
>       implementor="com.some.path.MyImpl"
> wsdlLocation="jar:file:WEB-INF/lib/MyWebServiceContracts.jar!/some/path/My.wsdl">
>       <jaxws:features>
>            <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
> 	<property name="jmsConfig" ref="jmsConfig" />
>            </bean>
> 	</jaxws:features>
> </jaxws:endpoint>
> 	
> <bean id="jmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration">
>       <property name="connectionFactory" ref="wrappedConnectionFactory" />
>       <property name="targetDestination" value="myRequestQueue"/>
>       <property name="replyDestination" value="myResponseQueue"/>
>       <!-- false means use queues, true means use topics  -->
>       <property name="pubSubDomain" value="false"/>
> </bean>
> 	
> <bean id="wrappedConnectionFactory"
> 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>
>
> -Jeff
>

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


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message