Try to use Camel JMS component to connect MQ Series using Websphere XA transaction Manager
Here is my setting. <bean id="MQSeries" class="org.apache.camel.component.jms.JmsComponent"> <property name="transacted" value="false" /> <property name="transactionManager" ref="transactionManager"/> <property name="connectionFactory" ref="connectionFactory" /> <property name="deliveryPersistent" value="${delivery.persistent}" /> <property name="timeToLive" value="${time.to.live}" /> <property name="concurrentConsumers" value="${jms.concurrent.consumers}" /> <property name="taskExecutor" ref="taskExecutor" /> <property name="cacheLevelName" value="CACHE_NONE" /> <property name="receiveTimeout" value="#{${jms.receive.timeout.in.seconds} * 1000}" /> <property name="recoveryInterval" value="#{${jms.recovery.time.in.seconds} * 1000}" /> <property name="destinationResolver" ref="jmsDestinationResolver" /> </bean> Got exception. 2013-04-05 10:47:19,202 [WorkManager.OTCWorkManager : 3] WARN com.anz.otc.jms.ExponentialBackOffMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'jms/OTCFXregrepQ' - trying to recover. Cause: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1013) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:258) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1071) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:965) at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61) at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:264) at java.security.AccessController.doPrivileged(AccessController.java:224) at javax.security.auth.Subject.doAs(Subject.java:495) at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:131) at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:89) at com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:335) at java.security.AccessController.doPrivileged(AccessController.java:251) at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1146) at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:199) at com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:188) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604) Caused by: javax.transaction.RollbackException at com.ibm.tx.jta.TransactionImpl.stage3CommitProcessing(TransactionImpl.java:1225) at com.ibm.tx.jta.TransactionImpl.processCommit(TransactionImpl.java:999) at com.ibm.tx.jta.TransactionImpl.commit(TransactionImpl.java:920) at com.ibm.ws.tx.jta.TranManagerImpl.commit(TranManagerImpl.java:436) at com.ibm.tx.jta.TranManagerSet.commit(TranManagerSet.java:161) at com.ibm.ws.tx.jta.UserTransactionImpl.commit(UserTransactionImpl.java:293) at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1010) ... 17 more If I change setting to <bean id="MQSeries" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="connectionFactory" /> <property name="deliveryPersistent" value="${delivery.persistent}" /> <property name="timeToLive" value="${time.to.live}" /> <property name="concurrentConsumers" value="${jms.concurrent.consumers}" /> <property name="taskExecutor" ref="taskExecutor" /> <property name="cacheLevelName" value="CACHE_NONE" /> <property name="receiveTimeout" value="#{${jms.receive.timeout.in.seconds} * 1000}" /> <property name="recoveryInterval" value="#{${jms.recovery.time.in.seconds} * 1000}" /> <property name="destinationResolver" ref="jmsDestinationResolver" /> </bean> I connection is oK. But I don't think it use websphere JTA transaction manager, but local jmsTransactionManager. That's not what we want. Anyone got any clue? Thank you in advance -- View this message in context: http://camel.465427.n5.nabble.com/Camel-JMS-Component-With-XA-transaction-Manager-connection-to-IBM-MQ-problem-tp5730376.html Sent from the Camel - Users mailing list archive at Nabble.com.