2014-12-26 2 views
0

У меня есть программное обеспечение Java EE, которое имеет множество EJB, разделенных определенными функциями. Я хотел бы повторно использовать максимальный код.EJB CDI-перехватчики при прикомандированных вызовах

В этом случае у меня возникла проблема с транзакциями базы данных. Имейте в виду: у меня есть EJB, который должен добавлять продукты и налоговую информацию в базу данных. Этот процесс включает в себя два объекта, и эта операция должна быть атомарной для базы данных.

Для этого я аннотировал метод addProducsAndTaxes с аннотацией, которая была создана мной @myAmonicTransaction.

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

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

ответ

1

Мне кажется, что вы уже дублируете транзакционное поведение EJB. Есть ли причина, по которой вы не можете использовать перехватчик транзакций JTA 1.2 и начать новую транзакцию только в рамках метода addProducsAndTaxes

Смежные вопросы