关于ejbs上的xa和transaction的问题

Question about xa and transaction on ejbs

我有两个question/doubt:

  1. 如果两个ejb部署在不同的ear或不同的applicationserver,一个调用另一个,他们仍然需要XA独立的,每个使用一个或多个db作为?

  2. 如果两个ejb部署在不同的服务器上,都用trans type = required注解,当第一个ejb调用第二个时,一个新的事务开始或使用第一个ejb的传播?

**我的ejb部署在Webpshere、Jboss、WebLogic上,可以用JEE 5/6/7技术(EJB 2/3)编写。

谢谢

罗伯托

无论 EJB 如何打包(相同或不同的 EAR)或部署位置(相同或不同的服务器),如果事务类型为 Required(即默认值),则事务由第一个 bean 必须流向第二个 bean,否则对第二个 bean 的调用必须导致错误。

服务器供应商应该没有区别,因为行为是在 EJB 规范的“事务”一章中定义的。但是,如果调用是在供应商之间进行的,那么很可能不支持事务上下文传播,在这种情况下,对第二个 bean 的调用应该被拒绝并出现异常。

基本上,如果客户端(第一个 bean)在事务中 运行 并使用“必需”调用第二个 bean,则事务上下文必须传播到第二个 bean 或导致错误。