Hello Arnaud! You could have a look at my samples which I prepared for CamelOne. There is also a XA transaction test which use ActiveMQ and JDBC. May be this will help... May be I will add and example with ActiveMQ and OpenJPA in a few days... I'm wondering why do you use org.jencks.amqpool.XaPooledConnectionFactory?
[1] https://github.com/muellerc/camel-in-transaction Best, Christian On Tue, May 8, 2012 at 5:24 PM, DEPREZ Arnaud AWL-IT <arnaud.dep...@atos.net > wrote: > Hi everyone,**** > > ** ** > > I use the Geronimo TransactionManager with > org.jencks.amqpool.XaPooledConnectionFactory for ActiveMQ and OpenJPA for a > database.**** > > Everything is configured with spring.**** > > ** ** > > I’ve done a simple test that take a message from a queue (“input queue”), > persist it in a database and then send this message into another queue > (“output queue”). Those steps are processed in the same global transaction > (JTA).**** > > I don’t know why, but when I start my bundle without sending any message > to the “input queue”, I see plenty of logs and a lot of warnings.**** > > ** ** > > Does someone have any idea why I get these stackTrace : ** ** > > ** ** > > WARN [DefaultMessageListenerContainer-1] (PooledSession.java:112) - Caught > exception trying rollback() when putting session back into the pool: > javax.jms.TransactionInProgressException: Cannot rollback() if an XA > transaction is already in progress **** > > javax.jms.TransactionInProgressException: Cannot rollback() if an XA > transaction is already in progress **** > > at > org.apache.activemq.TransactionContext.rollback(TransactionContext.java:238) > **** > > at > org.apache.activemq.ActiveMQSession.rollback(ActiveMQSession.java:580)**** > > at > org.jencks.amqpool.PooledSession.close(PooledSession.java:109)**** > > at > org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:89) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:540) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:533) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:329) > **** > > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) > **** > > at > org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009) > **** > > at > org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) > **** > > at > org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) > **** > > at > org.apache.aries.transaction.GeronimoPlatformTransactionManager.commit(GeronimoPlatformTransactionManager.java:76) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:257) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) > **** > > at java.lang.Thread.run(Thread.java:619)**** > > WARN [DefaultMessageListenerContainer-1] > (DefaultMessageListenerContainer.java:821) - Setup of JMS message listener > invoker failed for destination 'SimpleInWithExceptionB' - trying to > recover. Cause: Local JMS transaction failed to commit; nested exception is > org.apache.activemq.AlreadyClosedException: Cannot use The session has > already been closed as it has already been closed**** > > INFO [DefaultMessageListenerContainer-1] > (DefaultMessageListenerContainer.java:862) - Successfully refreshed JMS > Connection**** > > WARN [DefaultMessageListenerContainer-1] (TransactionImpl.java:208) - > Unable to enlist XAResource org.apache.activemq.TransactionContext@62953a, > errorCode: -6**** > > javax.transaction.xa.XAException**** > > at > org.apache.activemq.TransactionContext.start(TransactionContext.java:334)* > *** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.enlistResource(TransactionImpl.java:202) > **** > > at > org.jencks.amqpool.XaConnectionPool.createSession(XaConnectionPool.java:56) > **** > > at > org.jencks.amqpool.PooledConnection.createSession(PooledConnection.java:132) > **** > > at > org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.access$1(AbstractPollingMessageListenerContainer.java:1) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer$MessageListenerContainerResourceFactory.createSession(AbstractPollingMessageListenerContainer.java:530) > **** > > at > org.springframework.jms.connection.ConnectionFactoryUtils.doGetTransactionalSession(ConnectionFactoryUtils.java:300) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:288) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) > **** > > at java.lang.Thread.run(Thread.java:619)**** > > WARN [DefaultMessageListenerContainer-1] (TransactionImpl.java:542) - > Unexpected exception from afterCompletion; continuing**** > > java.lang.RuntimeException: org.apache.activemq.AlreadyClosedException: > Cannot use The session has already been closed as it has already been closed > **** > > at > org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:92) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:540) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:533) > **** > > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback(TransactionImpl.java:496) > **** > > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback(TransactionManagerImpl.java:265) > **** > > at > org.springframework.transaction.jta.JtaTransactionManager.doRollback(JtaTransactionManager.java:1036) > **** > > at > org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845) > **** > > at > org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822) > **** > > at > org.apache.aries.transaction.GeronimoPlatformTransactionManager.rollback(GeronimoPlatformTransactionManager.java:80) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.rollbackOnException(AbstractPollingMessageListenerContainer.java:410) > **** > > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) > **** > > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) > **** > > at java.lang.Thread.run(Thread.java:619)**** > > Caused by: org.apache.activemq.AlreadyClosedException: Cannot use The > session has already been closed as it has already been closed**** > > at > org.jencks.amqpool.PooledSession.getSession(PooledSession.java:283)**** > > at > org.jencks.amqpool.PooledSession.close(PooledSession.java:91)**** > > at > org.jencks.amqpool.XaConnectionPool$Synchronization.afterCompletion(XaConnectionPool.java:89) > **** > > ... 14 more**** > > ** ** > > [image: blue_strip] > *Arnaud Deprez* > Analyst-Programmer > Acquiring Back-Office > +32 2 727 72 09 > arnaud.dep...@atos.net<http://intranet.atosworldline.com/Region1-fr/firstname.lastn...@atos.net> > Chaussee de Haecht 1442 Haachtsesteenweg > 1130 Brussels > Belgium > atosworldline.be > [image: Atos Worldline logo]**** > > P please don't print unless you really need to **** > > ** ** > > ------------------------------ > > Atos Worldline SA/NV - Chaussee de Haecht 1442 Haachtsesteenweg > - 1130 Brussels - Belgium > RPM-RPR Bruxelles-Brussel - TVA-BTW BE 0418.547.872 > Bankrekening-Compte Bancaire-Bank Account 310-0269424-44 > BIC BBRUBEBB - IBAN BE55 3100 2694 2444 > > "The information contained in this e-mail and any attachment thereto is > confidential and may contain information which is protected by intellectual > property rights. > This information is intended for the exclusive use of the recipient(s) > named above. > This e-mail does not constitute any binding relationship or offer toward > any of the addressees. > If you are not one of the addressees , one of their employees or a proxy > holder entitled to hand over this message to the addressee(s), any use of > the information contained herein (e.g. reproduction, divulgation, > communication or distribution,...) is prohibited. > If you have received this message in error, please notify the sender and > destroy it immediately after. > The integrity and security of this message cannot be guaranteed and it may > be subject to data corruption, interception and unauthorized amendment, for > which we accept no liability." >