2011-10-05 76 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