【问题标题】:JTA Transactions on asynchronous EJBs异步 EJB 上的 JTA 事务
【发布时间】:2014-03-26 08:44:30
【问题描述】:


我正在考虑在我们的 Java EE 6 应用程序中使用 EJB 3.1 的异步特性。我唯一关心的是如何管理 JTA 事务? F.e.如果我将异步调用与 EJB 同步调用混合会发生什么?他们会加入同一个交易还是异步交易生活在他们自己的 tx 上下文中?
谢谢!

【问题讨论】:

    标签: java jakarta-ee asynchronous transactions


    【解决方案1】:

    如果您不注释任何内容,它们将在同一个事务中。当涉及到它们之间的事务传播时,异步会话 bean 的行为与同步会话 bean 相同。

    例如,如果您有一个异步方法,您可以从中调用另一个 EJB 的同步方法,那么事务将在同步 EJB 方法之间传播(即默认情况下它们将在事务中执行)。

    唯一的区别在于客户端事务上下文的传播。规范说:

    客户端事务上下文不会通过异步传播 方法调用。在 Bean Developer 看来,从来没有 从客户端流入的事务上下文。这意味着,对于 例如,REQUIRED 事务属性的语义 异步方法与 REQUIRES_NEW 完全相同。

    【讨论】:

    • 正如您引用规范中的引文所指出的那样,“它们将在同一个事务中”并不总是正确的,因此第一句话令人困惑。
    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多