java - 谁能给我指出 JavaEE SessionContext 的替代方案

标签 java jakarta-ee jpa cdi jta

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

我能够使用SessionContext之前,但在注入(inject)更多依赖项之后,框架(WildFly 8.1.0 内的 Weld CDI)没有标记我的 ApplicationScoped对象不再作为 session 或消息驱动的 bean。 (根据错误消息,很可能是这样)

所以问题是:还有其他选择吗?我确实调查过UserTransaction ,但“遭受”与 SessionContext 相同的限制.

最佳答案

我遇到了a post by Jaikiran Pai-2这促使我研究名为 TransactionSynchronizationRegistry 的替代方案。 ,被认为是在这些情况下要走的路。 (引用:很少解释此 API 的用法,应用程序/库继续使用 UserTransaction。)

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

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

我尝试了一下,效果非常好。

关于java - 谁能给我指出 JavaEE SessionContext 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26647399/

相关文章:

java - MariaDB 的 Hibernate 命名策略 (UPPER_SNAKE_CASE)

java - Getting WARN : SQL Error: 1205, SQLState : 41000 ERROR: Lock wait timeout exceeded; try restarting transaction. 使用hibernate保存记录

java - Spring 和 Hibernate 配置

java - JPA:创建数据库然后连接

java - 重新加载微调器时显示先前选择的答案

java - Hibernate多对多映射到同一实体单向

java - 有时java枚举是一个字符串

java - 动态多级层次结构 JSON 到 Java Pojo。重复用于多个项目

提交表单后出现 javax.ejb.EJBException

java - 我可以使用 Apache POI 在同一张工作表中同时创建卡住 Pane 和分割 Pane 吗?