Christian, This is exactly what I have been attempting to do, and based on examples and the documentation it was unclear to me whether or not this should work. I already have service interfaces that have been generated by wsdl2java as well as Impl classes. The Impl classes are already configured as spring beans so I'd prefer to use the existing beans for both jms and http processing if possible. I uploaded my latest configuration to this thread earlier, but I still haven't been able to get it to work. I believe the crux of the problem is that the destination that is being passed to the JMSConfig is an instance of ServletDestination rather than an actual JMS Destination. I'm hoping it's a simple config issue. Any suggestions would be greatly appreciated.
Thanks, John Christian Schneider wrote: > > Hi John and Dan, > > it is possible to publish a jms endpoint with a wsdl that does not > contain jms information. > You can use the wsdl with http information to generate the java code > and then setup the jms endpoint with a spring config. It is even > possible to work without a wsdl by using > the jaxws annotations. > > Basically you simply need a jaxws:endpoint: > > <jaxws:endpoint > xmlns:customer="http://customerservice.example.com/" > id="CustomerService" > address="jms://" > serviceName="customer:CustomerServiceService" > endpointName="customer:CustomerServiceEndpoint" > > implementor="com.example.customerservice.impl.CustomerServiceImpl"> > <jaxws:features> > <bean > class="org.apache.cxf.transport.jms.JMSConfigFeature" > p:jmsConfig-ref="jmsConfig" /> > </jaxws:features> > </jaxws:endpoint> > > serviceName and endpointName can be set to any values. The whole jms > config is done in the jmsConfig bean. > > <bean > id="jmsConfig" > class="org.apache.cxf.transport.jms.JMSConfiguration" > p:useJms11="true" > p:connectionFactory-ref="jmsConnectionFactory" > p:targetDestination="test.cxf.jmstransport.queue" /> > > <bean > id="jmsConnectionFactory" > class="org.apache.activemq.ActiveMQConnectionFactory"> > <property > name="brokerURL" > value="tcp://localhost:61616" /> > </bean> > > I hope this helps .. greetings > > Christian > > Daniel Kulp schrieb: >> Not sure it's currently possible without a modified wsdl. I think the >> transport factory is chosen from the extensor in the service/port and the >> "soap" extensor maps to the soap transport which I think would just know >> about >> http as it would look at the transport id on the soap:binding thing in >> the >> binding. (would need to double check that) >> >> You could TRY setting a unique (fake) serviceName/endpointName (probably >> just >> the endpointName) and seeing if the runtime would create a new one for >> it. >> I'm not sure if that would work though. >> >> The best option would probably be to create a small wsdl that just >> imports the >> other wsdl and adds a jms service/port. (basically, a really small >> wsdl) >> >> Dan >> >> >> On Fri May 29 2009 1:31:49 pm jp4 wrote: >> >>> This updated configuration gives the same error. It's almost identical >>> to >>> my HTTP endpoint except for the address and jmsConfig feature... >>> Namespaces, wsdl, servicename, and endpoint all match the WSDL but I get >>> the same error (Caused by: >>> org.apache.cxf.configuration.ConfigurationException: You can only use >>> JMSConfigFeature with the jms transport). Any help would be greatly >>> appreciated as I'm under some tight deadlines to get this stuff working. >>> >>> Thanks, >>> >>> John >>> >>> <jaxws:endpoint id="JMSSingleSignOnServicesImpl_1_0_0" >>> wsdlLocation="SingleSignOn_1_0_0.wsdl" >>> serviceName="as:SingleSignOnServicePorts" >>> endpointName="as:SingleSignOnService" >>> >>> xmlns:as="http://www.foo.com/enterpriseservices/accountservices/singlesigno >>> n_1_0_0" address="jms://" >>> >>> implementor="#singleSignOnServicesImpl_1_0_0"> >>> <jaxws:features> >>> <bean >>> class="org.apache.cxf.transport.jms.JMSConfigFeature" >>> p:jmsConfig-ref="jmsConfig" /> >>> </jaxws:features> >>> </jaxws:endpoint> >>> >>> <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> >>> >>> <bean id="jndiDestinationResolver" >>> class="org.springframework.jms.support.destination.JndiDestinationResolver" >>> >>>> <property name="jndiTemplate" ref="jndiTemplate"/> >>>> >>> </bean> >>> >>> <bean id="jmsConfig" >>> class="org.apache.cxf.transport.jms.JMSConfiguration" >>> p:connectionFactory-ref="wrappedConnectionFactory" >>> p:destinationResolver-ref="jndiDestinationResolver" >>> p:targetDestination="accountServicesRequestQueue" >>> p:replyDestination="accountServicesResponseQueue"> >>> </bean> >>> >>> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> >>> <property name="environment"> >>> <props> >>> <prop >>> key="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialC >>> ontextFactory</prop> <prop >>> key="java.naming.provider.url">tcp://localhost:61616</prop> <!-- lets >>> register some destinations --> >>> <prop >>> key="queue.accountServicesRequestQueue">accountServicesRequestQueue</prop> >>> <prop >>> key="queue.accountServicesResponseQueue">accountServicesResponseQueue</prop >>> >>>> </props> >>>> >>> </property> >>> </bean> >>> >>> jp4 wrote: >>> >>>> I am currently using cxf 2.2. I have several http endpoints (which are >>>> generated from wsdl). These endpoints work great since dumping the >>>> jboss >>>> native stack! >>>> >>>> Now I'd like one of my endpoints to support both http as well as jms. >>>> I've read the cxf docs, but it's unclear whether or not I can do this >>>> without modifying the WSDL. Ideally, I'd just like to configure >>>> another >>>> endpoint which listens on a request queue (and delegates to the >>>> endpoint >>>> that I have already configured in spring). >>>> >>>> I have the following configuration which throws the following exception >>>> on startup... I have configured the address="jms://". Can anyone >>>> point >>>> me in the right direction? >>>> >>>> Thanks, >>>> >>>> John >>>> >>>> Caused by: org.apache.cxf.configuration.ConfigurationException: You can >>>> only use JMSConfigFeature with the jms transport >>>> at >>>> org.apache.cxf.transport.jms.JMSConfigFeature.initialize(JMSConfigFeature >>>> .java:61) >>>> >>>> >>>> <bean id="wsCtx" >>>> class="org.apache.cxf.jaxws.context.WebServiceContextImpl"/> >>>> >>>> <jaxws:endpoint id="JMSSingleSignOnServicesImpl_1_0_0" >>>> address="jms://" >>>> >>>> implementor="#singleSignOnServicesImpl_1_0_0"> >>>> <jaxws:features> >>>> <bean >>>> class="org.apache.cxf.transport.jms.JMSConfigFeature" >>>> p:jmsConfig-ref="jmsConfig" /> >>>> </jaxws:features> >>>> </jaxws:endpoint> >>>> >>>> <bean id="jndiConfig" >>>> class="org.apache.cxf.transport.jms.JNDIConfiguration"> >>>> <property name="environment"> >>>> <props> >>>> <prop >>>> key="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitia >>>> lContextFactory</prop> <prop >>>> key="java.naming.provider.url">tcp://localhost:61616</prop> </props> >>>> </property> >>>> </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> >>>> >>>> <bean id="jmsConfig" >>>> class="org.apache.cxf.transport.jms.JMSConfiguration" >>>> p:jndiConfig-ref="jndiConfig" >>>> p:connectionFactory-ref="wrappedConnectionFactory" >>>> p:jndiTemplate-ref="jndiTemplate" >>>> p:targetDestination="accountServicesRequestQueue" >>>> p:replyDestination="accountServicesResponseQueue"> >>>> </bean> >>>> >> >> > > > -- > > Christian Schneider > --- > http://www.liquid-reality.de > > > -- View this message in context: http://www.nabble.com/CXF-JMS-Integration-tp23767613p23786869.html Sent from the cxf-user mailing list archive at Nabble.com.
