在 jboss 中检索到多个数据库的连接时出错,即使没有事务也是如此
我们正在从 JBoss 6 升级到 JBoss 7。我们应用程序的性质为每个客户都有一个单独的数据库实例,以及一个所有客户通用的核心配置数据库。我们通常有EJB代码,它至少会在一次调用中引用核心数据库以及单个客户的数据,甚至是一些遍历所有客户的一般后台流程。
在 JBoss 6 中,通过设置具有 NOT_SUPPORTED 事务属性的方法,可以毫无问题地处理这个问题。但是,JBoss 7 对此抱怨,并出现以下错误:
ARJUNA012140:不允许添加多个最后的资源。尝试添加 LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@74bec54d[connectionListener=d3ce980 connectionManager=25b47a05 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:14, 从属节点名称=null, eis_name=未知 eis name >]),但已经有 LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@518d0191[connectionListener=1a05d94a connectionManager=135f1cfe warn=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:13, 从属节点名称=null, eis_name=未知 eis 名称 >]))
我们如何解决这个问题,而不将每个对不同数据库的调用包装在单独的EJB调用和事务中。有没有办法在EJB调用或类似的东西中实际关闭JBoss事务管理?
注意:在赏金开始后,根据额外的发现修改了这个问题,以突出对特定问题的关注并消除排除的其他可能性。