EJB-подобные транзакции в JAX-RS

Я добавляю RESTful API в существующее приложение (JBoss 4, EJB 2, добавляю RESTEasy). Приложение в настоящее время имеет сеансовые компоненты с транзакциями, управляемыми контейнером. Для начала я вызываю удаленные интерфейсы на Enterprise Beans. Использование EJB прекращается, поэтому новые функции будут добавлены без написания новых методов для bean-компонентов.

Предлагают ли JAX-RS или JBoss 4 какую-либо поддержку транзакций для методов ресурсов? Или мне нужно написать свой собственный код транзакции в каждом из методов ресурса?

JAX-RS имеет PreProcessInterceptors и PostProcessInterceptors, но, похоже, не имеет перехватчика, который обертывает вызов.


person Mark Lutton    schedule 07.10.2010    source источник


Ответы (3)


Почему бы вам не использовать сеансовые компоненты в качестве службы JAX-RS? Транзакции, управляемые контейнером, очень хорошо работают с Java EE.

Для примера см.:

person bdoughan    schedule 07.10.2010

Если вы хотите, чтобы ваши открытые службы REST «управлялись» транзакцией, вам может потребоваться взглянуть на Поддержка транзакций для приложений на базе JAX RS

person ChristiaanP    schedule 30.11.2011

Мне нужно вызвать метод внутри JAX-RS bean-компонента, который принимает объект объекта param, поэтому поток программы должен быть внутри одной транзакции, чтобы не вызывать исключение отдельного объекта.

Наконец, у меня есть объект UserTransaction @Injected (CDI) для моего JAX-RS Bean (Class) и обернуть код внутри этого метода как:

userTransaction.begin(); 
// code requiring transaction goes here 
userTransaction.commit(); 

Кажется, он работает правильно для меня, возвращая хорошие результаты.

person Michał Ziobro    schedule 23.11.2015