java - 处理不同 EAR 上的交易

标签 java hibernate orm transactions jta

据我们所知,处理多个 EAR 和同一事务的最佳实践是什么,我们需要应用 XA 概念才能使事务正常工作。但显然在我们一直致力于的当前项目中,这对于创建和更新来说并不是严格必要的;但是,如果我们尝试从实体检索任何集合,我们会收到一条错误,指出该事务不是 Activity 事务或已关闭,但如果我们更新 Ear A 中的实体 A 并更新 Ear B 中的实体 B,则当实体 A 和实体 B 具有不同的数据源时,它会完美地工作,此时我们对此感到非常困惑,因为我们还没有配置任何 xa 数据源。处理这个问题的最佳方法是什么?事务由 bean 处理,而不是由容器处理,并且 EAR A 和 EAR B 之间的数据源不同

最佳答案

当您想要在单个事务中使用多个资源(数据库、JMS 资源、JCA 连接器)时,您需要 XA 事务(也称为“全局事务”)。XA 事务涉及 JTA 事务管理器,用于通过两阶段提交 (2PC) 协议(protocol)进行协调。有关 XA 的更多详细信息,请参阅 Mike Spille 的这篇精彩文章 XA Exposed

(...) if we update Entity A in Ear A and update Entity B in Ear B it works perfectly when Entity A and Entity B has different datasources

您如何执行更新(我的意思是,从哪里)? “它有效”到底是什么意思?您确定在出现问题时回滚这两个更新吗?如果不使用全局事务,我会感到惊讶。你能澄清一下吗?

关于java - 处理不同 EAR 上的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1903150/

相关文章:

sql - 寻找下一个空闲时间段

java - 通过嵌套列表对象中的多个值查找对象 Hibernate、Jpa

php - Doctrine:如何根据与 Criteria 的关联按属性排序

java - hasNextLine() 总是返回 false

java - 如何访问 GAE 上的拉取队列

java - 将 HQL 转换为 SQL 查询

php - 什么 PHP ORM 最像 NHibernate?

java - 使用 Byte Buddy 创建自定义方法签名的高效方法

java - 将java程序保存为一个文件时遇到问题吗?

database - 自适应数据库