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
>>>>>>
>>>>>>
>>>>>>
>>>>>>         
>>>>     
>>>
>>>
>>>   
>>
>>
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/CXF-JMS-Integration-tp23767613p23816093.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to