任何人都可以指出我是JavaEE SessionContext的替代品

时间:2014-10-30 07:35:17

标签: java java-ee jpa cdi jta

在Java EE上下文中,特别是在CDI ApplicationScoped对象中,我需要强制回滚容器管理的事务。 (它是JPA(trans-)动作和一些文件系统动作的组合,后者不是真正的事务性的,所以我必须手动做一些事情)

之前我能够使用SessionContext,但是在注入了更多依赖项之后,框架(WildFly 8.1.0中的Weld CDI)并没有将我的ApplicationScoped对象标记为会话或消息 - 驱动豆不再。 (根据错误消息,最可能是正确的)

所以问题是:有替代方案吗?我确实调查了UserTransaction,但是'受到'与SessionContext相同的限制。

1 个答案:

答案 0 :(得分:1)

我遇到了a post by Jaikiran Pai-2,这引发了我调查另一个名为TransactionSynchronizationRegistry的替代方案,被认为是这种情况下的方法。 (引用:很少解释此API的用法,而应用程序/库继续使用UserTransaction。)

我必须使用以下代码注释注入点:

@Resource(name = "java:comp/TransactionSynchronizationRegistry")
private TransactionSynchronizationRegistry transactionSynchronizationRegistry;

我尝试了它,它就像一个魅力。