Являются ли блокировщики перехватчиков EJB 3.1?

это мой первый пост здесь!

Я новичок в разработке Java EE, и я хочу знать, может ли перехватчик блокировать нормальный поток выполнения.

То, что я хочу реализовать, - это своего рода bean-компонент "наблюдатель": предположим, что у меня есть bean-компонент, который выполняет обновление в базе данных, вызываемое из веб-уровня. Я хотел бы, чтобы другой bean-компонент вызывался после обновления асинхронно, чтобы сделать что-то еще, в моем случае отправить электронное письмо с помощью JavaMail, не блокируя нормальный поток первого bean-компонента, т.е. вернуть контроль тому, кто вызывает первый bean-компонент.

Моя идея состоит в том, чтобы перехватить какой-нибудь метод сеансового ejb: из этого перехватчика я бы хотел вызвать некоторые другие ejb, например одноэлементный ejb. Правильный подход? Я должен использовать что-то еще?

Спасибо!


person robbetto    schedule 22.10.2011    source источник


Ответы (1)


Да, именно для этого и нужны интерцепторы. Клиент вызывает некоторый метод вашего EJB, и вы определяете, какие перехватчики должны перехватывать этот вызов.

В методе перехватчика вы можете решить, что делать с запросом — либо он может перейти к следующему перехватчику в цепочке (или реальной конечной точке — вашему EJB — если это последний перехватчик), либо он может заблокировать выполнение.

В методе перехвата у вас есть доступ к InvocationContext на который вы должны явно вызвать методом proceed(), чтобы продолжить выполнение запроса. Отсутствие вызова этого метода явно блокирует вызов.

ХТН.

person Piotr Nowicki    schedule 22.10.2011