I'm not very happy with this solution... By the way, I noticed that the property JTA_TRANSACTION_PROPERTY_NAME was never set into the JMS binding component code. So how can I get it to enlist the submission part of my workflow into the same transaction? (Remember that I'm just doing JMS -> JMS)
Mariusz Brylant wrote: > > Gude, > > My knowledge of SMX is rather limited, but I am using JMS extensively > with Mule and some commercial ESBs. From what I have read about SMX it > seems that id does not provide JNDI registry (which seems like a > sensible conclusion since SMX is not a JEE container), although I might > be wrong. > > However assuming that I am right, even when you enable automatic > enlisting of the JNDI resources in the transaction context, you still > need to be able to lookup activeMQ context from the jndi repository > (your original configuration does not create AMQ connection based on > JNDI context lookup). > > Even if SMX has inbuilt JNDI facility, in case your are running a > standalone AMQ, it will not "atomagically" enlist its destinations in > SMX JNDI registry. > > Anyway, you have 2 options - either integrate AMQ with a container like > Jboss (which provides JNDI facility) or simply grab Jboss AS and use > Jboss MQ or JBoss Messaging (depending on version of Jboss), If you > choose the first option, AMQ website describes how to deploy into Jboss. > If you decide to go with the latter, I am happy to help you configuring > XA aware destinations in Jboss and your SU to use Jboss MQ instead. I'd > suggest the latter, since it will allow you to avoid a headache > integrating AMQ into Jboss. > > gude wrote: >> I forgot to precise that I'm using servicemix 4. There's no more conf >> directory. Do you where I configure the container in SMX 4? >> >> >> Raphaël Delaporte wrote: >> >>> Hi, >>> >>> Add autoEnlistInTransaction="true" : >>> >>> <sm:container id="jbi" >>> rootDir="./data/smx" >>> MBeanServer="#jmxServer" >>> installationDirPath="./hotdeploy" >>> monitorDeploymentDirectory="false" >>> monitorInterval="1" >>> transactionManager="#transactionManager" >>> createJmxConnector="false" >>> depends-on="jndi" >>> autoEnlistInTransaction="true"> >>> >>> >>> in the conf/servicemix.xml. >>> >>> Regards, >>> >>> Raphaël >>> >>> >>> 2010/2/4 gude<[email protected]> >>> >>> >>>> For the moment I'm testing the use of XA, next I'll use two different >>>> JMS >>>> broker (MQseries and OpenJMS), that's why I want XA. >>>> I don't understand who enlists my JMS XAResource in the transaction, I >>>> didn't find anywhere the code who does this neither in servicemix-jms, >>>> nmr >>>> or spring-framework. >>>> I don't understand what you mean conerning the registration of XA >>>> resources >>>> in the JNDI registry. I thought that only the transaction manager was >>>> recoverable from the JNDI properties, and the JBI container is in >>>> charge >>>> to >>>> do this. Then I create my XAConnection and XASessions and enlist it >>>> into >>>> a >>>> new created transaction. That's what I did into an other JBI container, >>>> and >>>> it worked. >>>> It seems that there's something I didn't get... >>>> >>>> >>>> >>>> Mariusz Brylant wrote: >>>> >>>>> Hi, >>>>> >>>>> All XA capable resources participating in the XA transaction should be >>>>> enlisted in (and looked up from) the JNDI registry. Your >>>>> configuration >>>>> suggests that you are actually connecting to a standalone AMQ server >>>>> which does not provide JNDI registry. >>>>> >>>>> Would consider running AMQ deployed inside JEE container as a JCA >>>>> resource. >>>>> >>>>> Also would suggest asking yourself a question if you really need an >>>>> overhead of the XA transactions - both queues seat on the same >>>>> resources (#connectionFactory), therefore native/local transaction >>>>> >>>> seems >>>> >>>>> more appropriate. >>>>> >>>>> Have a look here " >>>>> http://www.infoq.com/presentations/native-transactions-java-spring " >>>>> >>>> for >>>> >>>>> some ideas. >>>>> >>>>> Best regards, >>>>> Mario >>>>> >>>>> Mariusz Brylant >>>>> [email protected] >>>>> >>>>> gude wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> I would like to receive a message from a JMS queue and send it into >>>>>> an >>>>>> other >>>>>> one inside the same XA transaction. But I have the following trace in >>>>>> >>>> the >>>> >>>>>> log, while attempting to get the input message : >>>>>> >>>>>> 16:11:45,323 | INFO | tenerContainer-2 | >>>>>> >>>> DefaultMessageListenerContainer >>>> >>>>>> | >>>>>> .DefaultMessageListenerContainer 750 | Setup of JMS message listener >>>>>> invoker failed for destination 'queue/transactions-in' - trying to >>>>>> recover. >>>>>> Cause: Session's XAResource has not been enlisted in a distributed >>>>>> transaction. >>>>>> >>>>>> my xbean.xml looks like : >>>>>> >>>>>> <?xml version="1.0" encoding="UTF-8" ?> >>>>>> >>>>>> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0" >>>>>> xmlns:t1="http://examples/transaction1"> >>>>>> >>>>>> <jms:consumer service="t1:t1jmsreceiver" >>>>>> endpoint="t1jmsreceiver" >>>>>> targetService="t1:t1sendtot2" >>>>>> targetEndpoint="t1sendtot2" >>>>>> destinationName="queue/transactions-in" >>>>>> connectionFactory="#connectionFactory" >>>>>> marshaler="#consumerMarshaler" >>>>>> synchronous="true" >>>>>> transacted="xa" >>>>>> sessionAcknowledgeMode="2"/> >>>>>> >>>>>> <jms:provider service="t1:t1sendtot2" >>>>>> endpoint="t1sendtot2" >>>>>> destinationName="queue/transactions-checkpoint" >>>>>> connectionFactory="#connectionFactory"/> >>>>>> >>>>>> <bean id="connectionFactory" >>>>>> class="org.apache.activemq.ActiveMQXAConnectionFactory"> >>>>>> <property name="brokerURL" value="tcp://localhost:61616" /> >>>>>> </bean> >>>>>> >>>>>> <bean id="consumerMarshaler" >>>>>> class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler"> >>>>>> <property name="mep" >>>>>> value="http://www.w3.org/2004/08/wsdl/in-only" >>>>>> /> >>>>>> <property name="copyProperties" value="true" /> >>>>>> </bean> >>>>>> >>>>>> </beans> >>>>>> >>>>>> What should I do? >>>>>> >>>>>> >>>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/Session%27s-XAResource-has-not-been-enlisted-in-a-distributed-transaction.-tp27452437p27455535.html >>>> Sent from the ServiceMix - User mailing list archive at Nabble.com. >>>> >>>> >>>> >>> >> >> > > -- View this message in context: http://old.nabble.com/Session%27s-XAResource-has-not-been-enlisted-in-a-distributed-transaction.-tp27452437p27497851.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
