Java Arjuna01240:不允许添加多个最后的资源

Java Arjuna01240:不允许添加多个最后的资源,java,transactions,wildfly,jta,Java,Transactions,Wildfly,Jta,我有2个数据源,在一个方法中,我需要从2个数据库中写入和读取数据。数据库是PostgreSQL,我的EAR应用程序运行在wildfly-16上 我不能用相同的方法使用2个数据库连接 好的,我知道这一点,因为系统无法跨不同的数据库管理事务 因此,我在ejb中拆分了方法: @TransactionAttribute(TransactionAttributeType.NEVER) public Response mainMethod(String parameter) { method1();

我有2个数据源,在一个方法中,我需要从2个数据库中写入和读取数据。数据库是PostgreSQL,我的EAR应用程序运行在wildfly-16上

我不能用相同的方法使用2个数据库连接

好的,我知道这一点,因为系统无法跨不同的数据库管理事务

因此,我在ejb中拆分了方法:

@TransactionAttribute(TransactionAttributeType.NEVER)
public Response mainMethod(String parameter) {
   method1();
   method2()
}

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void method1(){
    ...write on database 1...
}

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void method2(){
    ...write on database 2...
}
为什么我仍然会犯同样的错误?呼叫不是由两个不同的事务管理吗

ARJUNA012140: Adding multiple last resources is disallowed. 
Trying to add LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@594d9ba8[connectionListener=677e78 connectionManager=2a095926 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f58, node_name=1, branch_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f8a, subordinatenodename=null, eis_name=java:/jboss/datasource/db1 > productName=PostgreSQL productVersion=10.8 (Ubuntu 10.8-0ubuntu0.18.04.1) jndiName=java:/jboss/datasource/db1])), 
but already have LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@39fc2dc2[connectionListener=3724f31c connectionManager=39a995fb warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f58, node_name=1, branch_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f64, subordinatenodename=null, eis_name=java:/jboss/datasource/db2 > productName=PostgreSQL productVersion=10.8 (Ubuntu 10.8-0ubuntu0.18.04.1) jndiName=java:/jboss/datasource/db2]))
Arjuna01240:不允许添加多个最后的资源。
正在尝试添加LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@594d9ba8[connectionListener=677e78 connectionManager=2a095926 Warning=false currentXid=productName=PostgreSQL产品版本=10.8(Ubuntu 10.8-0ubuntu0.18.04.1)jndiName=java:/jboss/datasource/db2]))

注释在封面下使用动态代理,因此不适用于私有方法,也不适用于内部调用的公共方法(在
上)。您必须在不同的EJB中声明这两种方法

否则,关于您的错误,系统可以使用XA跨不同资源管理事务

只需将一个数据源切换到xa数据源,就可以解决问题。请注意,在xa事务中可以有一个非xa数据源,这要归功于,但不是两个(这是arjuna错误的含义)。

可能的重复