Thanks,  I did get it working.    In case if others are
interested.....  I am using Spring with the following  configuration.
In this set up I have configured "client" and "server"  queues and
explicitly configure the "p:replyDestination".




<?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:jaxws="http://cxf.apache.org/jaxws";
        xmlns:p="http://www.springframework.org/schema/p";
        xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
                http://cxf.apache.org/core 
http://cxf.apache.org/schemas/core.xsd
                http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd
">



        <bean id="jmsConnectionFactory"
class="org.apache.qpid.client.AMQConnectionFactory">
                <constructor-arg index="0"
                        
value="amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'" />
        </bean>

        <bean id="jmsConfig" 
class="org.apache.cxf.transport.jms.JMSConfiguration"
                p:connectionFactory-ref="jmsConnectionFactory" 
p:targetDestination="server"
                p:replyDestination="client" p:messageType="binary" />


        <!-- JMS Endpoint -->
        <jaxws:endpoint xmlns:customer="http://A URL/"
                id="MYServiceJMS" address="jms://"
                implementor="MY WEB SERVICE IMPL CLASS">
                <jaxws:features>
                        <!-- <bean 
class="org.apache.cxf.feature.LoggingFeature" /> -->
                        <bean 
class="org.apache.cxf.transport.jms.JMSConfigFeature"
                                p:jmsConfig-ref="jmsConfig" />
                </jaxws:features>
                <jaxws:outInterceptors>
                        <bean 
class="org.apache.cxf.interceptor.AttachmentOutInterceptor" />
                </jaxws:outInterceptors>
                <jaxws:properties>
                        <entry key="mtom-enabled" value="true" />
                </jaxws:properties>

        </jaxws:endpoint>

</beans>


On Mon, Nov 28, 2011 at 2:58 PM, Robbie Gemmell
<[email protected]> wrote:
> Hi Daryoush,
>
> DId you manage to get this working? It looks like the Spring or CXF
> code is creating a temporary destination with one session and then
> using it with another, which unfortunately wont work due to the
> clients use of exclusive auto-delete queues under the covers.
>
> If you set a named replyDestination that should help get it going, and
> if you use the Address syntax covered at
> http://qpid.apache.org/books/0.12/Programming-In-Apache-Qpid/html/ch02s04.html
> you should still be able to set it to delete when the consumer is
> closed if required.
>
> Robbie
>
> On 14 November 2011 21:03, Daryoush Mehrtash <[email protected]> wrote:
>> I am trying to replace ActiveMQ messaging with Qpdi in the  Apache CXF's
>>  SOAP over JMS demo application without much success.  When I try to run
>> the client,  i get:  "Cannot consume from a temporary destination created
>> on another session"
>>
>> My starting point is the Spring based,  CXF demo that uses configuration
>> based on:  http://cxf.apache.org/docs/using-the-jmsconfigfeature.html
>>
>> I have changed that  connection factory and jmsConfig beans to qpid
>> classes. as below:
>>
>>
>>
>>>     <bean id="jmsConnectionFactory"
>>> class="org.apache.qpid.client.AMQConnectionFactory">
>>>         <constructor-arg index="0"
>>>            value = "amqp://guest:guest@clientid
>>> /test?brokerlist='tcp://localhost:5672'"
>>>               />
>>>     </bean>
>>>
>>>     <bean id="jmsConfig"
>>> class="org.apache.cxf.transport.jms.JMSConfiguration"
>>> p:connectionFactory-ref="jmsConnectionFactory"
>>>  p:targetDestination="XXX"/>
>>
>>
>>> <jaxws:client id="customerService"
>>> address="jms://"
>>> serviceClass="com.example.customerservice.CustomerService">
>>> <jaxws:features>
>>> <bean class="org.apache.cxf.feature.LoggingFeature" />
>>> <bean class="org.apache.cxf.transport.jms.JMSConfigFeature"
>>> p:jmsConfig-ref="jmsConfig" />
>>> </jaxws:features>
>>> </jaxws:client>
>>
>>
>> The same configuration is used on client and server.
>>
>> When I run the server it all comes up ok.     The client appears to send
>> the message to the server, the server sends its response back, but the
>> client fails to read the response.  Complaining that " Cannot consume from
>> a temporary destination created on another session"
>>
>>
>>
>> Any ideas?
>>
>>
>> This is the client exception that I get:
>>
>>
>> org.springframework.jms.UncategorizedJmsException: Uncategorized exception
>> occured during JMS processing; nested exception is javax.jms.JMSException:
>> Cannot consume from a temporary destination created on another session
>> at
>> org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
>> at
>> org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
>> at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
>> at
>> org.springframework.jms.core.JmsTemplate.receiveSelected(JmsTemplate.java:695)
>> at org.apache.cxf.transport.jms.JMSConduit.sendExchange(JMSConduit.java:229)
>> at
>> org.apache.cxf.transport.jms.JMSOutputStream.doClose(JMSOutputStream.java:56)
>> at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:192)
>> at
>> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
>> at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:195)
>> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>> at
>> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>> at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:535)
>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:465)
>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:368)
>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:321)
>> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
>> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
>> at $Proxy47.getCustomersByName(Unknown Source)
>> at
>> com.example.customerservice.client.CustomerServiceTester.testCustomerService(CustomerServiceTester.java:49)
>> at
>> com.example.customerservice.client.CustomerServiceSpringClient.main(CustomerServiceSpringClient.java:36)
>> Caused by: javax.jms.JMSException: Cannot consume from a temporary
>> destination created on another session
>> at
>> org.apache.qpid.client.AMQSession.checkTemporaryDestination(AMQSession.java:2392)
>> at
>> org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1978)
>> at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:987)
>> at
>> org.springframework.jms.core.JmsTemplate.createConsumer(JmsTemplate.java:993)
>> at org.springframework.jms.core.JmsTemplate.doReceive(JmsTemplate.java:722)
>> at org.springframework.jms.core.JmsTemplate$9.doInJms(JmsTemplate.java:697)
>> at org.springframework.jms.core.JmsTemplate$9.doInJms(JmsTemplate.java:1)
>> at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)
>>
>>
>>
>> Thanks,
>>
>> Daryoush
>>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[email protected]
>
>



-- 
Daryoush

Weblog:  http://onfp.blogspot.com/

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to