Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从EJB调用的事务中的过程获取ARJUNA016051:线程已与事务关联!在JBossAS 7.1中_Java_Transactions_Ejb_Jboss7.x_Transactionmanager - Fatal编程技术网

Java 从EJB调用的事务中的过程获取ARJUNA016051:线程已与事务关联!在JBossAS 7.1中

Java 从EJB调用的事务中的过程获取ARJUNA016051:线程已与事务关联!在JBossAS 7.1中,java,transactions,ejb,jboss7.x,transactionmanager,Java,Transactions,Ejb,Jboss7.x,Transactionmanager,这与JBossAS 7.1有关,我们一直在使用它为我们的一个应用程序创建EJB 我们的应用程序体系结构是这样的,所有业务逻辑都存在于存储过程中,在存储过程中我们从EJB调用存储过程,我们遇到了一个问题,在存储过程中有一组要调用的过程,这些过程都构成了一个原子操作。例如,假设必须提交一个用户详细信息,在这种情况下,我们必须调用7个不同的过程,每个过程插入、更新不同的表并将结果返回给EJB,因此,如果其中一个调用失败,则必须撤消在前一个操作中插入或更新的所有详细信息。我们了解到,这可以通过引入交易来

这与JBossAS 7.1有关,我们一直在使用它为我们的一个应用程序创建EJB

我们的应用程序体系结构是这样的,所有业务逻辑都存在于存储过程中,在存储过程中我们从EJB调用存储过程,我们遇到了一个问题,在存储过程中有一组要调用的过程,这些过程都构成了一个原子操作。例如,假设必须提交一个用户详细信息,在这种情况下,我们必须调用7个不同的过程,每个过程插入、更新不同的表并将结果返回给EJB,因此,如果其中一个调用失败,则必须撤消在前一个操作中插入或更新的所有详细信息。我们了解到,这可以通过引入交易来实现

所以我们尝试在Jboss中使用TransactionManager

public ClsXDKRTApp() throws NamingException {
    tx1 = new TransactionManagerLocator().getTM("java:jboss/TransactionManager");
}
上面tx1被定义为bean类的一个属性,并且它正确地实例化

但是,当我们试图开始交易时,我们遇到了以下错误

 11:28:08,201 ERROR [stderr] (http--0.0.0.0-8080-1) javax.transaction.NotSupportedException: BaseTransaction.checkTransactionState - ARJUNA016051: thread is already associated with a transaction!
 11:28:08,201 ERROR [stderr] (http--0.0.0.0-8080-1)     at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:63)
 11:28:08,201 ERROR [stderr] (http--0.0.0.0-8080-1)     at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:65)
我们已经在不同的论坛上找到了解决方案,但是上面提到的用例与这个完全不同


关于如何处理和解决此问题的任何指导都将非常有用

如果EJB是容器管理的,那么将有默认事务,您可以在同一调用中调用不同的过程(确保不要在过程中写入提交/回滚),EJB容器将自动处理整个事务