2011-10-05 73 views
6

我使用@Asynchronous注释编写了一个小测试,以了解EJB3.1中的异步行为。看来:异步EJB 3.1方法和事务

如果该方法在同一个bean作为主叫存在,

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

然而,如果异步方法在另一个bean存在,行为预计即呼叫的副作用是异步的,并且呼叫方的交易是独立的(异步方法具有用于交易REQUIRES_NEW行为)。这令我感到困惑,因为这两种情况下的行为都不一样。有人请澄清?

P.S.环境EJB 3.1,JBoss 6

+1

你是否使用'SessionContext#getBusinessObject(class)'调用方法而不是使用'this'关键字? (差异是解释[这里](http://stackoverflow.com/questions/3381002/how-is-the-return-value-of-sessioncontext-getbusinessobject-different-from-thi/3384128#3384128)) – stratwine

+0

@ stratwine几乎可以肯定的问题,我只是将其转换为答案。 –

+0

@stratwine您是对的,请在回答中写下您的意见,以便我可以接受 – anergy

回答

5

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