java – 即使没有事务也可以将jboss中的连接检索到多个数据库
我们正在从JBoss 6升级到JBoss 7.我们的应用程序的性质每个客户都有一个单独的数据库实例,以及所有客户通用的核心配置数据库.我们经常有EJB代码,至少在一个调用中引用核心数据库加上个别客户的数据,甚至通过所有客户的一些后台进程.
在JBoss 6中,这是通过使用NOT_SUPPORTED事务属性设置方法来处理的.但是,JBoss 7抱怨有以下错误:
我们如何解决这个问题,而不必在单独的EJB调用和事务中将每个调用包裹到不同的数据库.有没有办法在EJB调用或类似的事情中实际关闭JBoss事务管理? 注意:在基于额外发现的奖励开始之后,此问题已被修改,以便将重点放在具体问题上,并删除被排除的其他可能性. 解决方法
两个建议:
考虑将数据源更新为XA等价物.这将解决您的所有问题.我怀疑你在这里受到阻碍? 更新: 我不建议启用多个单阶段资源,因为它会大大削弱您的应用程序的事务属性.但是如果要在JBoss 7中执行此操作,则需要修改standalone.xml并添加: <system-properties> <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/> </system-properties> 你现在拥有一个没有交易的系统.仍然会做什么,是警告你,如果你有启发式的结果. 我的建议仍然是使用XA数据源,如果可以的话. 更新2: 哦,如果有人来读这个,我想补充一点,如果你可以将代码分成不同的方法,与OP不同,我建议重构代码,并使用@TransactionAttribute(REQUIRES_NEW)来创建并行事务.这比打开多个1PC更好,尽管不如开启XA. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |