【发布时间】:2014-03-26 08:44:30
【问题描述】:
我正在考虑在我们的 Java EE 6 应用程序中使用 EJB 3.1 的异步特性。我唯一关心的是如何管理 JTA 事务? F.e.如果我将异步调用与 EJB 同步调用混合会发生什么?他们会加入同一个交易还是异步交易生活在他们自己的 tx 上下文中?
谢谢!
【问题讨论】:
标签: java jakarta-ee asynchronous transactions
我正在考虑在我们的 Java EE 6 应用程序中使用 EJB 3.1 的异步特性。我唯一关心的是如何管理 JTA 事务? F.e.如果我将异步调用与 EJB 同步调用混合会发生什么?他们会加入同一个交易还是异步交易生活在他们自己的 tx 上下文中?
谢谢!
【问题讨论】:
标签: java jakarta-ee asynchronous transactions
如果您不注释任何内容,它们将在同一个事务中。当涉及到它们之间的事务传播时,异步会话 bean 的行为与同步会话 bean 相同。
例如,如果您有一个异步方法,您可以从中调用另一个 EJB 的同步方法,那么事务将在同步 EJB 方法之间传播(即默认情况下它们将在事务中执行)。
唯一的区别在于客户端事务上下文的传播。规范说:
客户端事务上下文不会通过异步传播 方法调用。在 Bean Developer 看来,从来没有 从客户端流入的事务上下文。这意味着,对于 例如,REQUIRED 事务属性的语义 异步方法与 REQUIRES_NEW 完全相同。
【讨论】: