|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
Exception when using JTA transaction in JMS transporthello everybody,
I am trying to use JTA transaction in JMS transport. I deployed the the latest synapse war distribution(I studied that we need to have a JTA provider within the J2EE server where we deploy synpase), inside JBoss 5.0.0 GA. It gives the following execption when I use a JTA trasaction (<parameter name="transport.Transactionality">jta</parameter>). It works fine with local transactions(<parameter name="transport.Transactionality">local</parameter>). According to the stack trace it's clear that we are trying to start a new transaction inside the JMS transport while another tx is already in progress. Any help to fix the issue is higly appriciated. Thanks in advance. My axis2.xml configuration for JMS transport listner is as follows. <transportReceiver name='jms' class='org.apache.axis2.transport.jms.JMSListener'> <parameter name='default' locked='false'> <parameter name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> <parameter name='java.naming.provider.url'>jnp://localhost:1099</parameter> <parameter name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> <parameter name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> <parameter name="transport.Transactionality">jta</parameter> <parameter name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> </parameter> </transportReceiver> 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] Listener Task is already associated with a transaction javax.transaction.NotSupportedException: BaseTransaction.checkTransactionState - [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] thread is already associated with a transaction! at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] Uncaught exception org.apache.axis2.transport.jms.AxisJMSException: Listener Task is already associated with a transaction at org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) at org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Caused by: javax.transaction.NotSupportedException: BaseTransaction.checkTransactionState - [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] thread is already associated with a transaction! at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) ... 4 more 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] Listener Task is already associ -- http://wso2.org http://llvm.org http://www.minix3.org/ |
|
|
Re: Exception when using JTA transaction in JMS transportOn Sun, Aug 2, 2009 at 11:17 PM, Rajika Kumarasiri <rajika@...> wrote:
hello everybody, I just looked into the problem and it seems the current thread is already associate with a transaction. I guess we need to get the status of the current transaction and if there is an existing one we need to join with it otherwise we need to start a transaction. -Rajika hello everybody, > I am trying to use JTA transaction in JMS transport. I deployed the the > latest synapse war distribution(I studied that we need to have a JTA > provider within the J2EE server where we deploy synpase), inside JBoss > 5.0.0 GA. It gives the following execption when I use a JTA trasaction > (<parameter name="transport.Transactionality">jta</parameter>). It works > fine with local transactions(<parameter > name="transport.Transactionality">local</parameter>). According to the > stack trace it's clear that we are trying to start a new transaction inside > the JMS transport while another tx is already in progress. Any help to fix > the issue is higly appriciated. Thanks in advance. > > My axis2.xml configuration for JMS transport listner is as follows. > > <transportReceiver name='jms' > class='org.apache.axis2.transport.jms.JMSListener'> > <parameter name='default' locked='false'> > <parameter > name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> > <parameter > name='java.naming.provider.url'>jnp://localhost:1099</parameter> > <parameter > name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> > <parameter > name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> > <parameter name="transport.Transactionality">jta</parameter> > <parameter > name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> > </parameter> > </transportReceiver> > > > 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > Listener Task is already associated with a transaction > javax.transaction.NotSupportedException: > BaseTransaction.checkTransactionState - > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > thread is already associated with a transaction! > at > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > at > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > at > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > at > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > at > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] Uncaught > exception > org.apache.axis2.transport.jms.AxisJMSException: Listener Task is already > associated with a transaction > at > org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) > at > org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) > at > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) > at > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: javax.transaction.NotSupportedException: > BaseTransaction.checkTransactionState - > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > thread is already associated with a transaction! > at > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > at > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > at > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > at > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > ... 4 more > 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > Listener Task is already associ > > > > > -- > http://wso2.org > http://llvm.org > http://www.minix3.org/ > > > -- http://wso2.org http://llvm.org http://www.minix3.org/ |
|
|
Re: Exception when using JTA transaction in JMS transportOn Wed, Aug 26, 2009 at 12:02 PM, Rajika Kumarasiri <rajika@...> wrote:
hi again, I located the problem. This happens in ServiceTaskManager.java:396 where we create a new user transaction in the while loop. The problem occurs when we try to create a second transaction in the same thread which gives the mentioned exception. I put the following check in which if a tranasction is already associated with the current thread of execution we'll live with it(use-existing-one-or-new). If you are happy with it I can provide it as a patch. <code> if (transactionality == BaseConstants.TRANSACTION_JTA) { ut = getUserTransaction(); if (ut.getStatus() == Status.STATUS_NO_TRANSACTION) { ut.begin(); } } </code> -Rajika > > On Sun, Aug 2, 2009 at 11:17 PM, Rajika Kumarasiri <rajika@...>wrote: > hello everybody, > I just looked into the problem and it seems the current thread is already > associate with a transaction. I guess we need to get the status of the > current transaction and if there is an existing one we need to join with it > otherwise we need to start a transaction. > > -Rajika > > > > hello everybody, >> I am trying to use JTA transaction in JMS transport. I deployed the the >> latest synapse war distribution(I studied that we need to have a JTA >> provider within the J2EE server where we deploy synpase), inside JBoss >> 5.0.0 GA. It gives the following execption when I use a JTA trasaction >> (<parameter name="transport.Transactionality">jta</parameter>). It works >> fine with local transactions(<parameter >> name="transport.Transactionality">local</parameter>). According to the >> stack trace it's clear that we are trying to start a new transaction inside >> the JMS transport while another tx is already in progress. Any help to fix >> the issue is higly appriciated. Thanks in advance. >> >> My axis2.xml configuration for JMS transport listner is as follows. >> >> <transportReceiver name='jms' >> class='org.apache.axis2.transport.jms.JMSListener'> >> <parameter name='default' locked='false'> >> <parameter >> name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> >> <parameter >> name='java.naming.provider.url'>jnp://localhost:1099</parameter> >> <parameter >> name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> >> <parameter >> name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> >> <parameter name="transport.Transactionality">jta</parameter> >> <parameter >> name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> >> </parameter> >> </transportReceiver> >> >> >> 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] >> Listener Task is already associated with a transaction >> javax.transaction.NotSupportedException: >> BaseTransaction.checkTransactionState - >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> thread is already associated with a transaction! >> at >> com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) >> at >> com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) >> at >> org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) >> at >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) >> at >> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >> at java.lang.Thread.run(Thread.java:595) >> 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] Uncaught >> exception >> org.apache.axis2.transport.jms.AxisJMSException: Listener Task is already >> associated with a transaction >> at >> org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) >> at >> org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) >> at >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) >> at >> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >> at java.lang.Thread.run(Thread.java:595) >> Caused by: javax.transaction.NotSupportedException: >> BaseTransaction.checkTransactionState - >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> thread is already associated with a transaction! >> at >> com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) >> at >> com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) >> at >> org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) >> at >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) >> ... 4 more >> 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] >> Listener Task is already associ >> >> >> >> >> -- >> http://wso2.org >> http://llvm.org >> http://www.minix3.org/ >> >> >> > > > -- > http://wso2.org > http://llvm.org > http://www.minix3.org/ > > > -- http://wso2.org http://llvm.org http://www.minix3.org/ |
|
|
Re: Exception when using JTA transaction in JMS transportHi Rajika,
I think you are right... please go ahead and provide a patch. Thanks, Ruwan On Wed, Aug 26, 2009 at 4:48 PM, Rajika Kumarasiri <rajika@...> wrote: > On Wed, Aug 26, 2009 at 12:02 PM, Rajika Kumarasiri <rajika@...> > wrote: > hi again, > I located the problem. This happens in ServiceTaskManager.java:396 where we > create a new user transaction in the while loop. The problem occurs when we > try to create a second transaction in the same thread which gives the > mentioned exception. I put the following check in which if a tranasction is > already associated with the current thread of execution we'll live with > it(use-existing-one-or-new). If you are happy with it I can provide it as a > patch. > > <code> > > if (transactionality == BaseConstants.TRANSACTION_JTA) { > ut = getUserTransaction(); > if (ut.getStatus() == Status.STATUS_NO_TRANSACTION) { > ut.begin(); > } > } > </code> > > -Rajika > > > > > > > > On Sun, Aug 2, 2009 at 11:17 PM, Rajika Kumarasiri <rajika@... > >wrote: > > hello everybody, > > I just looked into the problem and it seems the current thread is already > > associate with a transaction. I guess we need to get the status of the > > current transaction and if there is an existing one we need to join with > it > > otherwise we need to start a transaction. > > > > -Rajika > > > > > > > > hello everybody, > >> I am trying to use JTA transaction in JMS transport. I deployed the the > >> latest synapse war distribution(I studied that we need to have a JTA > >> provider within the J2EE server where we deploy synpase), inside JBoss > >> 5.0.0 GA. It gives the following execption when I use a JTA trasaction > >> (<parameter name="transport.Transactionality">jta</parameter>). It works > >> fine with local transactions(<parameter > >> name="transport.Transactionality">local</parameter>). According to the > >> stack trace it's clear that we are trying to start a new transaction > inside > >> the JMS transport while another tx is already in progress. Any help to > fix > >> the issue is higly appriciated. Thanks in advance. > >> > >> My axis2.xml configuration for JMS transport listner is as follows. > >> > >> <transportReceiver name='jms' > >> class='org.apache.axis2.transport.jms.JMSListener'> > >> <parameter name='default' locked='false'> > >> <parameter > >> > name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> > >> <parameter > >> name='java.naming.provider.url'>jnp://localhost:1099</parameter> > >> <parameter > >> > name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> > >> <parameter > >> > name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> > >> <parameter name="transport.Transactionality">jta</parameter> > >> <parameter > >> name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> > >> </parameter> > >> </transportReceiver> > >> > >> > >> 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > >> Listener Task is already associated with a transaction > >> javax.transaction.NotSupportedException: > >> BaseTransaction.checkTransactionState - > >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> thread is already associated with a transaction! > >> at > >> > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > >> at > >> > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > >> at > >> > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > >> at > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > >> at > >> > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > >> at > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >> at > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >> at java.lang.Thread.run(Thread.java:595) > >> 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] > Uncaught > >> exception > >> org.apache.axis2.transport.jms.AxisJMSException: Listener Task is > already > >> associated with a transaction > >> at > >> > org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) > >> at > >> > org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) > >> at > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) > >> at > >> > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > >> at > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >> at > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >> at java.lang.Thread.run(Thread.java:595) > >> Caused by: javax.transaction.NotSupportedException: > >> BaseTransaction.checkTransactionState - > >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> thread is already associated with a transaction! > >> at > >> > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > >> at > >> > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > >> at > >> > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > >> at > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > >> ... 4 more > >> 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > >> Listener Task is already associ > >> > >> > >> > >> > >> -- > >> http://wso2.org > >> http://llvm.org > >> http://www.minix3.org/ > >> > >> > >> > > > > > > -- > > http://wso2.org > > http://llvm.org > > http://www.minix3.org/ > > > > > > > > > -- > http://wso2.org > http://llvm.org > http://www.minix3.org/ > -- Ruwan Linton Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb WSO2 Inc.; http://wso2.org email: ruwan@...; cell: +94 77 341 3097 blog: http://ruwansblog.blogspot.com |
|
|
Re: Exception when using JTA transaction in JMS transportAlso we need to document that if there is a transaction we will be
continuing that transaction without trying nest the transactions. I know nested transactions are tricky, so it is OK to not to support them. But we need to clearly document this. Thanks, Ruwan On Thu, Aug 27, 2009 at 7:38 AM, Ruwan Linton <ruwan.linton@...>wrote: > Hi Rajika, > > I think you are right... please go ahead and provide a patch. > > Thanks, > Ruwan > > > On Wed, Aug 26, 2009 at 4:48 PM, Rajika Kumarasiri <rajika@...>wrote: > >> On Wed, Aug 26, 2009 at 12:02 PM, Rajika Kumarasiri <rajika@...> >> wrote: >> hi again, >> I located the problem. This happens in ServiceTaskManager.java:396 where >> we >> create a new user transaction in the while loop. The problem occurs when >> we >> try to create a second transaction in the same thread which gives the >> mentioned exception. I put the following check in which if a tranasction >> is >> already associated with the current thread of execution we'll live with >> it(use-existing-one-or-new). If you are happy with it I can provide it as >> a >> patch. >> >> <code> >> >> if (transactionality == BaseConstants.TRANSACTION_JTA) { >> ut = getUserTransaction(); >> if (ut.getStatus() == Status.STATUS_NO_TRANSACTION) { >> ut.begin(); >> } >> } >> </code> >> >> -Rajika >> >> >> >> >> > >> > On Sun, Aug 2, 2009 at 11:17 PM, Rajika Kumarasiri <rajika@... >> >wrote: >> > hello everybody, >> > I just looked into the problem and it seems the current thread is >> already >> > associate with a transaction. I guess we need to get the status of the >> > current transaction and if there is an existing one we need to join with >> it >> > otherwise we need to start a transaction. >> > >> > -Rajika >> > >> > >> > >> > hello everybody, >> >> I am trying to use JTA transaction in JMS transport. I deployed the the >> >> latest synapse war distribution(I studied that we need to have a JTA >> >> provider within the J2EE server where we deploy synpase), inside JBoss >> >> 5.0.0 GA. It gives the following execption when I use a JTA trasaction >> >> (<parameter name="transport.Transactionality">jta</parameter>). It >> works >> >> fine with local transactions(<parameter >> >> name="transport.Transactionality">local</parameter>). According to the >> >> stack trace it's clear that we are trying to start a new transaction >> inside >> >> the JMS transport while another tx is already in progress. Any help to >> fix >> >> the issue is higly appriciated. Thanks in advance. >> >> >> >> My axis2.xml configuration for JMS transport listner is as follows. >> >> >> >> <transportReceiver name='jms' >> >> class='org.apache.axis2.transport.jms.JMSListener'> >> >> <parameter name='default' locked='false'> >> >> <parameter >> >> >> name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> >> >> <parameter >> >> name='java.naming.provider.url'>jnp://localhost:1099</parameter> >> >> <parameter >> >> >> name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> >> >> <parameter >> >> >> name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> >> >> <parameter >> name="transport.Transactionality">jta</parameter> >> >> <parameter >> >> name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> >> >> </parameter> >> >> </transportReceiver> >> >> >> >> >> >> 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] >> >> Listener Task is already associated with a transaction >> >> javax.transaction.NotSupportedException: >> >> BaseTransaction.checkTransactionState - >> >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> >> thread is already associated with a transaction! >> >> at >> >> >> com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) >> >> at >> >> >> com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) >> >> at >> >> >> org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) >> >> at >> >> >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) >> >> at >> >> >> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) >> >> at >> >> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >> >> at >> >> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >> >> at java.lang.Thread.run(Thread.java:595) >> >> 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] >> Uncaught >> >> exception >> >> org.apache.axis2.transport.jms.AxisJMSException: Listener Task is >> already >> >> associated with a transaction >> >> at >> >> >> org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) >> >> at >> >> >> org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) >> >> at >> >> >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) >> >> at >> >> >> org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) >> >> at >> >> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >> >> at >> >> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >> >> at java.lang.Thread.run(Thread.java:595) >> >> Caused by: javax.transaction.NotSupportedException: >> >> BaseTransaction.checkTransactionState - >> >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> >> [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] >> >> thread is already associated with a transaction! >> >> at >> >> >> com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) >> >> at >> >> >> com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) >> >> at >> >> >> org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) >> >> at >> >> >> org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) >> >> ... 4 more >> >> 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] >> >> Listener Task is already associ >> >> >> >> >> >> >> >> >> >> -- >> >> http://wso2.org >> >> http://llvm.org >> >> http://www.minix3.org/ >> >> >> >> >> >> >> > >> > >> > -- >> > http://wso2.org >> > http://llvm.org >> > http://www.minix3.org/ >> > >> > >> > >> >> >> -- >> http://wso2.org >> http://llvm.org >> http://www.minix3.org/ >> > > > > -- > Ruwan Linton > Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb > WSO2 Inc.; http://wso2.org > email: ruwan@...; cell: +94 77 341 3097 > blog: http://ruwansblog.blogspot.com > -- Ruwan Linton Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb WSO2 Inc.; http://wso2.org email: ruwan@...; cell: +94 77 341 3097 blog: http://ruwansblog.blogspot.com |
|
|
Re: Exception when using JTA transaction in JMS transportOn Thu, Aug 27, 2009 at 7:40 AM, Ruwan Linton <ruwan.linton@...>wrote:
hi, Submitted. https://issues.apache.org/jira/browse/WSCOMMONS-497 -Rajika Also we need to document that if there is a transaction we will be > continuing that transaction without trying nest the transactions. I know > nested transactions are tricky, so it is OK to not to support them. But we > need to clearly document this. > > Thanks, > Ruwan > > On Thu, Aug 27, 2009 at 7:38 AM, Ruwan Linton <ruwan.linton@... > >wrote: > > > Hi Rajika, > > > > I think you are right... please go ahead and provide a patch. > > > > Thanks, > > Ruwan > > > > > > On Wed, Aug 26, 2009 at 4:48 PM, Rajika Kumarasiri <rajika@... > >wrote: > > > >> On Wed, Aug 26, 2009 at 12:02 PM, Rajika Kumarasiri <rajika@...> > >> wrote: > >> hi again, > >> I located the problem. This happens in ServiceTaskManager.java:396 where > >> we > >> create a new user transaction in the while loop. The problem occurs when > >> we > >> try to create a second transaction in the same thread which gives the > >> mentioned exception. I put the following check in which if a tranasction > >> is > >> already associated with the current thread of execution we'll live with > >> it(use-existing-one-or-new). If you are happy with it I can provide it > as > >> a > >> patch. > >> > >> <code> > >> > >> if (transactionality == BaseConstants.TRANSACTION_JTA) { > >> ut = getUserTransaction(); > >> if (ut.getStatus() == Status.STATUS_NO_TRANSACTION) { > >> ut.begin(); > >> } > >> } > >> </code> > >> > >> -Rajika > >> > >> > >> > >> > >> > > >> > On Sun, Aug 2, 2009 at 11:17 PM, Rajika Kumarasiri <rajika@... > >> >wrote: > >> > hello everybody, > >> > I just looked into the problem and it seems the current thread is > >> already > >> > associate with a transaction. I guess we need to get the status of the > >> > current transaction and if there is an existing one we need to join > with > >> it > >> > otherwise we need to start a transaction. > >> > > >> > -Rajika > >> > > >> > > >> > > >> > hello everybody, > >> >> I am trying to use JTA transaction in JMS transport. I deployed the > the > >> >> latest synapse war distribution(I studied that we need to have a JTA > >> >> provider within the J2EE server where we deploy synpase), inside > JBoss > >> >> 5.0.0 GA. It gives the following execption when I use a JTA > trasaction > >> >> (<parameter name="transport.Transactionality">jta</parameter>). It > >> works > >> >> fine with local transactions(<parameter > >> >> name="transport.Transactionality">local</parameter>). According to > the > >> >> stack trace it's clear that we are trying to start a new transaction > >> inside > >> >> the JMS transport while another tx is already in progress. Any help > to > >> fix > >> >> the issue is higly appriciated. Thanks in advance. > >> >> > >> >> My axis2.xml configuration for JMS transport listner is as follows. > >> >> > >> >> <transportReceiver name='jms' > >> >> class='org.apache.axis2.transport.jms.JMSListener'> > >> >> <parameter name='default' locked='false'> > >> >> <parameter > >> >> > >> > name='java.naming.factory.initial'>org.jnp.interfaces.NamingContextFactory</parameter> > >> >> <parameter > >> >> name='java.naming.provider.url'>jnp://localhost:1099</parameter> > >> >> <parameter > >> >> > >> > name='java.naming.factory.url.pkgs'>org.jboss.naming:org.jnp.interfaces</parameter> > >> >> <parameter > >> >> > >> > name='transport.jms.ConnectionFactoryJNDIName'>ConnectionFactory</parameter> > >> >> <parameter > >> name="transport.Transactionality">jta</parameter> > >> >> <parameter > >> >> > name="transport.UserTxnJNDIName">java:comp/UserTransaction</parameter> > >> >> </parameter> > >> >> </transportReceiver> > >> >> > >> >> > >> >> 21:51:41,679 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > >> >> Listener Task is already associated with a transaction > >> >> javax.transaction.NotSupportedException: > >> >> BaseTransaction.checkTransactionState - > >> >> > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> >> > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> >> thread is already associated with a transaction! > >> >> at > >> >> > >> > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > >> >> at > >> >> > >> > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > >> >> at > >> >> > >> > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > >> >> at > >> >> > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > >> >> at > >> >> > >> > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > >> >> at > >> >> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >> >> at > >> >> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >> >> at java.lang.Thread.run(Thread.java:595) > >> >> 21:51:41,679 INFO [STDOUT] 21:51:41,679 ERROR [NativeWorkerPool] > >> Uncaught > >> >> exception > >> >> org.apache.axis2.transport.jms.AxisJMSException: Listener Task is > >> already > >> >> associated with a transaction > >> >> at > >> >> > >> > org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:957) > >> >> at > >> >> > >> > org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48) > >> >> at > >> >> > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:397) > >> >> at > >> >> > >> > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > >> >> at > >> >> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > >> >> at > >> >> > >> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > >> >> at java.lang.Thread.run(Thread.java:595) > >> >> Caused by: javax.transaction.NotSupportedException: > >> >> BaseTransaction.checkTransactionState - > >> >> > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> >> > [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] > >> >> thread is already associated with a transaction! > >> >> at > >> >> > >> > com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79) > >> >> at > >> >> > >> > com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65) > >> >> at > >> >> > >> > org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:137) > >> >> at > >> >> > >> > org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:394) > >> >> ... 4 more > >> >> 21:51:41,697 INFO [STDOUT] 21:51:41,678 ERROR [ServiceTaskManager] > >> >> Listener Task is already associ > >> >> > >> >> > >> >> > >> >> > >> >> -- > >> >> http://wso2.org > >> >> http://llvm.org > >> >> http://www.minix3.org/ > >> >> > >> >> > >> >> > >> > > >> > > >> > -- > >> > http://wso2.org > >> > http://llvm.org > >> > http://www.minix3.org/ > >> > > >> > > >> > > >> > >> > >> -- > >> http://wso2.org > >> http://llvm.org > >> http://www.minix3.org/ > >> > > > > > > > > -- > > Ruwan Linton > > Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb > > WSO2 Inc.; http://wso2.org > > email: ruwan@...; cell: +94 77 341 3097 > > blog: http://ruwansblog.blogspot.com > > > > > > -- > Ruwan Linton > Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb > WSO2 <http://wso2.org/esb%0AWSO2> Inc.; http://wso2.org > email: ruwan@...; cell: +94 77 341 3097 > blog: http://ruwansblog.blogspot.com > -- http://wso2.org http://llvm.org http://www.minix3.org/ |
| Free embeddable forum powered by Nabble | Forum Help |