2010-09-24 12 views
5

Używam spoiny do obserwacji zdarzeń. Pomyślałem, że istnieje sposób na określenie, czy obserwator był asynchroniczny, czy nie, ale nie znajduję tej adnotacji ani dokumentacji.Spoina - obserwatorzy zdarzeń asynchronicznych

Czy obserwatorzy mogą być asynchroniczni, a jeśli tak, co muszę zrobić, aby to się stało?

+0

Myślę, że najbliższym moim odpowiednikiem jest użycie: TransactionalObserverMethodImpl wraz z TransactionPhase. Jeśli określę wartość TransactionPhase inną niż podczas, powiadomienie zostanie odłożone w czasie: http://download.oracle.com/javaee/6/api/javax/enterprise/event/TransactionPhase.html. –

+0

Moją jedyną skargą jest to, że jest przeznaczony do uruchamiania w RequestContext. Czy to część specyfikacji? –

Odpowiedz

5

Istnieje otwarte żądanie w tym celu: CDI-31: Asynchronous events.

W zależności od wymagań, można, zgodnie ze wskazaniem w komentarzu, ustawić inną transactional observer: Jeśli użyjesz AFTER_COMPLETION lub AFTER_SUCCESS, powinna ona wydawać się twoja aplikacja jak wykonanie asynchroniczne. Jednak dopóki framework się nie rozwiąże, właśnie znalazłem przykład używając JMS for asynchronous execution in CDI.

+0

Byłoby lepiej, gdyby ktoś otworzył błąd w grupie ekspertów CDI. Może moglibyśmy dostać to do JEE7! –

1

Jeśli chcesz to zobaczyć, musisz przejść przez link podany w odpowiedzi Kariem i wyrazić swoją opinię. Wygląda na to, że grupa ekspercka nie chce rozważać dodania zdarzeń asynchronicznych, ponieważ uważają, że to spuchnie spec.

Szczerze mówiąc, Guice udaje się zaoferować tę funkcję i pozostaje lekki, więc znajduję argument przeciwko temu małemu kontr-intuicyjnemu. Niemniej jednak, jeśli chcesz zobaczyć tę funkcję, przejdź do linku, wyślij swoją opinię.

-Jonathan

Powiązane problemy