处理不同EAR的交易

时间:2009-12-14 20:03:05

标签: java hibernate orm transactions jta

处理多个EAR和同一事务的最佳实践是什么,据我们所知,我们需要在事务正常工作中应用XA概念。但显然在我们一直在研究的潮流项目中,这对于创建和更新并不是绝对必要的;但是,如果我们尝试从实体中检索任何集合,我们会收到一个错误,表明它不是活动的事务或者它已关闭,但如果我们更新Ear A中的实体A并更新Ear B中的实体B,它在实体A时工作正常和实体B有不同的数据源,此时我们对此非常困惑,因为我们还没有配置任何xa数据源。如何使用它是最好的方法。事务是bean的句柄,而不是容器和数据源在EAR A和EAR B之间是不同的

1 个答案:

答案 0 :(得分:1)

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

  

(...)如果我们更新Ear A中的实体A并更新Ear B中的实体B,当实体A和实体B具有不同的数据源时,它将完美地工作

你如何进行更新(我的意思是,从哪里开始)? “它的作品”究竟是什么意思?如果出现问题,您确定两个更新都已回滚吗?如果不使用全局交易,我会感到惊讶。你能澄清一点吗?