首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解更好的XA数据源

理解更好的XA数据源
EN

Stack Overflow用户
提问于 2020-02-07 01:02:55
回答 1查看 52关注 0票数 0

我想在2个不同位置的数据库中分离2个表...因此,1个MySQL数据库位于一个数据中心,另一个位于另一个数据中心。

我使用的是Wildfly中的一个普通数据源,它使用JPA连接到一个java应用程序。现在我只想管理一个在实体管理器中配置的数据源。但我必须连接第二个数据库,并在第一个数据库的单个事务中进行管理。

要做到这一点,我认为我需要一个XA数据源,所以我必须配置一个数据源,该数据源包含指向我的2个MySQL数据库的2个连接字符串,并在persistance.xml中将jta数据源指向XA数据源名称?对吗?

对于这种情况,XA数据源是否存在,用于以透明方式管理两个数据库之间的事务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 03:01:06

您应该为每个架构配置一个单独的数据源。

MySQL和MariaDB不完全兼容XA。在Wildfly服务器中使用JTA时,我注意到了很多问题。一个主要问题是MySQL和MariaDB不能像JTA要求的那样正确地支持嵌套事务。

举个例子:

代码语言:javascript
运行
复制
start transaction;
insert into user...
    start transaction;
    insert into user_details...
    commit;
insert into orders...
rollback;

您所期望的是,由于外部事务被回滚,所以所有内容都被回滚。但是,对user和user_details表的插入将被提交,并且只回滚订单。

由于这个限制,Java的整个事务管理都会产生奇怪的结果。所以最好不要使用它。

我写了一篇关于测试Java企业应用程序的文章,其中包含一个如何在没有JTA的情况下使用EntityManagerFactory和EntityManager的示例:

http://stefanfrings.de/enterprise_junit/index.html#jndi

翻译成英文:

https://translate.google.com/translate?hl=en&sl=de&tl=en&u=http%3A%2F%2Fstefanfrings.de%2Fenterprise_junit%2F (跳到JNDI章节)

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

https://stackoverflow.com/questions/60100114

复制
相关文章

相似问题

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