【问题标题】:Asynchronous EJB 3.1 methods and Transactions异步 EJB 3.1 方法和事务
【发布时间】:2011-10-05 10:07:31
【问题描述】:

我使用@Asynchronous 注解编写了一个小测试来了解 EJB3.1 中的异步行为。看来:

如果方法与调用者在同一个bean中,

  1. 呼叫不再异步。
  2. 如果异步方法中的事务被回滚,则调用者事务被标记为回滚;它可能是 1 的副作用。

但是,如果异步方法存在于另一个 bean 中,则该行为是预期的,即调用是异步的并且调用者事务是独立的(异步方法对事务具有 REQUIRES_NEW 行为)。这让我感到困惑,因为为什么两种情况下的行为都不一样。有人能澄清一下吗?

附言环境 EJB 3.1,JBoss 6

【问题讨论】:

  • 您是否使用SessionContext#getBusinessObject(class) 而不是使用this 关键字调用该方法? (区别解释here
  • @stratwine 几乎可以肯定是问题所在,我只是将其转换为答案。
  • @stratwine 你是对的,请在回答中写下你的 cmets,以便我接受
  • @bkail,@anergy:完成,谢谢!

标签: java jakarta-ee ejb-3.1


【解决方案1】:

使用this 关键字而不是SessionContext#getBusinessObject(class) 调用方法会导致这种情况。 (区别解释here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多