作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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]))
最佳答案
注释在幕后使用动态代理,因此不适用于私有(private)方法,也不适用于内部调用的公共(public)方法(在 this
上)。您必须在不同的 EJB 中声明两个方法。
否则关于您的错误,系统可以使用XA管理跨不同资源的事务。
只需将您的数据源之一切换到 xa-datasource 即可解决该问题。请注意,由于LLRTO,您可以在 XA 事务中拥有一个非 xa 数据源。但不是两个(这就是阿朱那错误的含义)。
关于java - 阿朱那012140 : Adding multiple last resources is disallowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56650966/
我是一名优秀的程序员,十分优秀!