【发布时间】:2011-10-05 10:07:31
【问题描述】:
我使用@Asynchronous 注解编写了一个小测试来了解 EJB3.1 中的异步行为。看来:
如果方法与调用者在同一个bean中,
- 呼叫不再异步。
- 如果异步方法中的事务被回滚,则调用者事务被标记为回滚;它可能是 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