首页
学习
活动
专区
圈层
工具
发布

非XA事务
EN

Stack Overflow用户
提问于 2017-02-25 18:39:17
回答 2查看 892关注 0票数 1

情况:

我们有一个运行在WAS 8.5上的web应用程序(Spring,Hibernate),运行在3个不同的数据库上。他们在两个不同的地理位置。位置A:主数据DB (XA资源)。位置B: MD副本DB (R/O用途,非XA资源)+操作DB (XA资源)。

我们使用Last Participant Support,因此我们可以在全局事务(JTA)中包含MD副本数据库。使用服务方法上的注释来划分事务(服务方法反过来使用配置为访问这3个DB中的任何一个的服务和/或DAO)。只有几个操作需要同时写入操作数据库和MD数据库。我们打算去掉它们(作为分布式事务)。

问题:

我们希望在不重写应用程序的情况下摆脱XA (因此,只使用非XA JDBC驱动程序)。WAS中是否有全球事务的替代方案?ActivitySessions是否适用?如果是这样的话,是怎么做的?

EN

回答 2

Stack Overflow用户

发布于 2017-02-26 02:47:03

由于Last Participant Optimization ( LPO ),仍然可以将全局事务与非XA资源一起使用,但是使用LPO,每个全局事务只能使用1个非XA资源。因此,您仍然可以使用1个非XA数据源,并将其放在全局事务中,但是1资源全局事务从一开始就违背了使用全局事务的目的。

对于JDBC资源,拥有XA数据源是在没有LPO的情况下参与多资源全局事务的唯一方式。例如,要让2个数据源参与同一全局事务,则其中至少必须有一个是XADataSource。

票数 0
EN

Stack Overflow用户

发布于 2017-02-27 02:31:33

谢谢你的回答。

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

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

致以敬意,

1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42454944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档