Асинхронные методы и транзакции EJB 3.1 - PullRequest
6 голосов
/ 05 октября 2011

Я написал небольшой тест для понимания асинхронного поведения в EJB3.1 с использованием аннотации @Asynchronous. Кажется, что:

Если метод существует в том же компоненте, что и вызывающий объект,

  1. Вызов больше не асинхронизирован.
  2. Транзакция вызывающего абонента помечается для отката, если транзакция в асинхронном методе откатывается; это, вероятно, побочный эффект 1.

Однако, если асинхронный метод существует в другом компоненте, поведение ожидается, то есть вызов асинхронный, а транзакция вызывающего абонента независима (асинхронный метод для транзакции имеет поведение REQUIRES_NEW). Это меня озадачивает, потому что в обоих случаях поведение не одинаково. Кто-нибудь, пожалуйста, уточните?

P.S. Environment EJB 3.1, JBoss 6

1 Ответ

5 голосов
/ 07 октября 2011

Вызов метода с использованием ключевого слова this вместо SessionContext#getBusinessObject(class) вызывает это.(разница объясняется здесь )

...