Hi, John, The JMS URI is working in progress, it is a important part of Liu's GoSC project[1]. I will keep you posted when we have a sample for review ;)
[1] http://wiki.apache.org/general/soapjms4cxf Willem jp4 wrote: > Thanks for the feedback. I have included the cxf-entension-jms.xml. I'll > try to break this down into a project that I can distribute. Unfortunately > there are several layers of pom.xml abstraction that I'm using so publishing > something that's easily built will be a challenge. I'll try to break this > down into a simple example and publish that. In the mean time, are there > any samples out there that I could download and test locally? > > Thanks, > > John > > > liucong wrote: >> Hi >> I'm working on JMS-URI. And JMS-URI will work for SOAP/JMS >> specification implementation. >> You can publish the endpoint through a JMS URI and don't need to >> touch the WSDL file. >> >> Best regards, >> Liu >> >> Christian Schneider : >>> Hi Willem, >>> >>> yes, the JMS-URI is great. I guess Liu will work on this. >>> >>> I have tested what happens if you leave out the import. But I did not >>> get the same error John was experiencing so probably this is not the >>> problem. >>> >>> When all is configured correctly it should work fine with >>> jaxws:endpoint. It should be enough to set the address to jms:// to >>> mark define that it should use the jms code. >>> >>> Greetings >>> >>> Christian >>> >>> Willem Jiang schrieb: >>>> Just another thought, we could introduce the JMS-URI[1] which is used in >>>> soap-jms[2] to cxf-jms transport. In this way we can publish the >>>> endpoint by using a single JMS URI without touching any WSDL or the >>>> Spring configuration :). >>>> >>>> [1]http://www.potaroo.net/ietf/idref/draft-merrick-jms-uri/ >>>> [2]http://www.w3.org/TR/soapjms/ >>>> >>>> Willem >>>> >>>> Willem Jiang wrote: >>>> >>>>> Hi , >>>>> >>>>> I think you need to import the jms module in your spring >>>>> configuration file >>>>> <import resource="classpath:META-INF/cxf/cxf-extension-jms.xml" /> >>>>> >>>>> and set the endpoint transportId attribute with >>>>> "http://cxf.apache.org/transports/jms" >>>>> >>>>> But I just found current <jaxws:endpoint> doesn't support to set the >>>>> transportId, so you need to use <jaxws:server> to walk around this >>>>> issue. >>>>> >>>>> <jaxws:server >>>>> xmlns:customer="http://customerservice.example.com/" >>>>> id="CustomerService" >>>>> address="jms://" >>>>> serviceName="customer:CustomerServiceService" >>>>> endpointName="customer:CustomerServiceEndpoint" >>>>> >>>>> serviceClass="com.example.customerservice.impl.CustomerServiceImpl"> >>>>> <jaxws:features> >>>>> <bean >>>>> class="org.apache.cxf.transport.jms.JMSConfigFeature" >>>>> p:jmsConfig-ref="jmsConfig" /> >>>>> </jaxws:features> >>>>> </jaxws:server> >>>>> >>>>> Willem >>>>> >>>>> jp4 wrote: >>>>> >>>>>> 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 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>> >>>> >>> >> >> >
