我们在WAS 8.5上针对3个不同的数据库运行了一个Web应用程序(Spring,Hibernate)。它们分布在两个不同的地理位置。 位置A:主数据DB(XA资源)。 位置B:MD副本DB(R / O目的,非XA资源)+操作DB(XA资源)。
我们使用Last Participant Support,因此我们可以在全局事务(JTA)中包含MD Replica DB。使用服务方法上的注释来划分事务(注释使用配置为访问3个DB中的任何一个的服务和/或DAO)。 只有少数操作需要同时写入Operational DB和MD DB。我们打算摆脱它们(作为分销交易)。
我们希望摆脱XA(因此,只使用非XA JDBC驱动程序)而不重写应用程序。 WAS中是否有全球交易的替代方案? ActivitySessions会适用吗?如果是这样,怎么样?
答案 0 :(得分:0)
由于最后参与者优化(LPO),仍然可以使用具有非XA资源的全局事务,但每次使用LPO的全局事务限制为1个非XA资源。因此,您仍然可以使用1个非XA数据源并将其置于全局事务中,但是1资源全局事务排序首先会破坏使用全局事务的目的。
对于JDBC资源,拥有XA数据源是参与不使用LPO的多资源全局事务的唯一方法。例如,要让2个数据源参与同一个全局事务,其中至少有一个必须是XADataSource。
答案 1 :(得分:0)
感谢您的回答。
这是我所怀疑的,但我想知道WAS是否有其他事务管理器或事务管理器配置/模式以不同的方式运行(可能是ActivitySessions?)。
我知道,对于分布式事务管理,除了XA / 2PC之外,还存在不同的方法。也许他们提供不同或更低的保证[1]。
此致