非XA交易

时间:2017-02-25 10:39:17

标签: spring hibernate jta websphere-8 xa

场合:

我们在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会适用吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:0)

由于最后参与者优化(LPO),仍然可以使用具有非XA资源的全局事务,但每次使用LPO的全局事务限制为1个非XA资源。因此,您仍然可以使用1个非XA数据源并将其置于全局事务中,但是1资源全局事务排序首先会破坏使用全局事务的目的。

对于JDBC资源,拥有XA数据源是参与不使用LPO的多资源全局事务的唯一方法。例如,要让2个数据源参与同一个全局事务,其中至少有一个必须是XADataSource。

答案 1 :(得分:0)

感谢您的回答。

这是我所怀疑的,但我想知道WAS是否有其他事务管理器或事务管理器配置/模式以不同的方式运行(可能是ActivitySessions?)。

我知道,对于分布式事务管理,除了XA / 2PC之外,还存在不同的方法。也许他们提供不同或更低的保证[1]。

此致

[1] http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html