2011-10-05 17 views
6

Napisałem mały test, aby zrozumieć zachowanie asynchroniczne w EJB3.1 przy użyciu adnotacji @Asynchronous. Wydaje się, że:Asynchroniczne metody EJB 3.1 i transakcje

Jeśli metoda istnieje w tej samej fasoli jako rozmówcy,

  1. połączeń nie jest już niesynchroniczne.
  2. Transakcja dzwoniącego jest oznaczona do wycofania, jeśli transakcja w metodzie asynchronicznej zostanie wycofana; To prawdopodobnie efektem ubocznym 1.

Jednakże, jeżeli sposób asynchroniczny istnieje w innej ziaren jest oczekiwać, że zachowanie to jest połączenia jest asynchroniczny i transakcja wywołujący jest niezależny (sposób asynchroniczny mają REQUIRES_NEW zachowanie dla transakcji). Jest to dla mnie zagadkowe, ponieważ zachowanie nie jest takie samo w obu przypadkach. Czy ktoś mógłby wyjaśnić?

P.S. Środowisko EJB 3.1, JBoss 6

+1

czy wywołujesz metodę używając 'SessionContext # getBusinessObject (klasa)' zamiast używać słowa kluczowego 'this'? (różnica jest wyjaśniona [tutaj] (http://stackoverflow.com/questions/3381002/how-is-turn-value-of-sessioncontext-getbusinessobject-different- from-thi/3384128#3384128)) – stratwine

+0

@ stratwine Prawie na pewno problem, po prostu przekształciłbym go w odpowiedź. –

+0

@stratwine Masz rację, proszę wpisz swoje komentarze w odpowiedzi, abym mógł zaakceptować – anergy

Odpowiedz

5

Powoduje, że wywołanie metody za pomocą słowa kluczowego this zamiast za pomocą powoduje. (różnica jest wyjaśniona here)