JAX-RS中类似EJB的事务

时间:2010-10-07 17:57:49

标签: transactions jax-rs

我正在向现有应用程序添加RESTful API(JBoss 4,EJB 2,添加RESTEasy)。该应用程序当前具有带有容器管理事务的会话bean。首先,我在Enterprise Beans上调用远程接口。 EJB的使用正在逐步淘汰,因此无需在bean上编写新方法就可以添加新功能。

JAX-RS或JBoss 4是否为资源方法提供任何事务支持?或者我是否必须在每个资源方法中编写自己的事务代码?

JAX-RS具有PreProcessInterceptors和PostProcessInterceptors,但似乎没有包含调用的拦截器。

3 个答案:

答案 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(); 

对我来说似乎正常工作可以恢复良好的效果。