我正在向现有应用程序添加RESTful API(JBoss 4,EJB 2,添加RESTEasy)。该应用程序当前具有带有容器管理事务的会话bean。首先,我在Enterprise Beans上调用远程接口。 EJB的使用正在逐步淘汰,因此无需在bean上编写新方法就可以添加新功能。
JAX-RS或JBoss 4是否为资源方法提供任何事务支持?或者我是否必须在每个资源方法中编写自己的事务代码?
JAX-RS具有PreProcessInterceptors和PostProcessInterceptors,但似乎没有包含调用的拦截器。
答案 0 :(得分:2)
为什么不将会话bean用作JAX-RS服务?使用Java EE可以很好地处理容器管理的事务。
有关示例,请参阅:
答案 1 :(得分:0)
如果您希望对您公开的REST服务进行管理'通过交易,您可能需要查看Transactional support for JAX RS based applications
答案 2 :(得分:0)
我需要从JAX-RS bean内部调用一个方法,这样作为param实体对象,因此程序流必须在一个事务中,不会抛出分离的实体异常。
最后我将@Injected(CDI)UserTransaction对象添加到我的JAX-RS Bean(Class)中,并将此方法中的代码包装为:
userTransaction.begin();
// code requiring transaction goes here
userTransaction.commit();
对我来说似乎正常工作可以恢复良好的效果。