异步EJB 3.1方法和事务

ane*_*rgy 6 java java-ee ejb-3.1

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

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

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

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

PS环境EJB 3.1,JBoss 6

str*_*ine 5

使用this关键字而不是使用关键字调用方法SessionContext#getBusinessObject(class)会导致该问题.(这里解释了差异)