关于ejb上xa和事务的问题



我有两个疑问:

  1. 如果两个ejb部署在不同的ear或不同的应用程序服务器上,并且一个调用另一个,它们仍然需要XA独立,每个ejb使用一个或多个db作为?

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

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

感谢。

无论ejb如何打包(相同或不同的EAR)或部署在何处(相同或不同的服务器),如果事务类型是Required(即默认),则由第一个bean发起的事务必须流向第二个bean,或者对第二个bean的调用必须导致错误。

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

基本上,如果客户机(第一个bean)在事务中运行,并使用"required"调用第二个bean,那么事务上下文必须传播到第二个bean,否则将导致错误。

最新更新