我想在我们的Java EE 6应用程序中使用EJB 3.1的异步功能。我唯一担心的是如何管理JTA交易? F.E.如果我将异步调用与EJB同步调用混合会发生什么?他们会加入相同的交易或异步交易生活在他们自己的tx上下文?
Thannks!
答案 0 :(得分:1)
如果您没有注释任何内容,它们将在同一个交易中。当异步会话bean在它们之间进行事务传播时,其行为与同步会话bean的行为相同。
例如,如果你有一个async方法,从中调用另一个EJB的sync方法,那么事务将在同步EJB方法之间传播(即默认情况下它们将在事务中执行)。
唯一的区别与客户端事务上下文的传播有关。规范说:
客户端事务上下文不会随异步传播 方法调用。从Bean Developer的角度来看,从来没有 从客户端流入的事务上下文。这意味着,为 例如,REQUIRED事务属性的语义 异步方法与REQUIRES_NEW完全相同。