【问题标题】:application managed transactions in J2EEJ2EE 中的应用程序管理事务
【发布时间】:2014-02-20 15:32:46
【问题描述】:

有没有人举个例子说明从 J2EE 6 容器内的 CDI 托管 bean 内提交/回滚事务的最佳方式?

我遇到了一个特殊情况,其中带注释的方法对我不起作用(我从同一个类中的另一个方法调用该方法)并且我需要手动设置事务边界。我想知道我可以在我的代码中做什么来复制以下注释的行为:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

TIA

【问题讨论】:

    标签: java jakarta-ee transactions cdi


    【解决方案1】:

    你可以为事务管理编写拦截器,然后你可以为你的方法添加这个拦截器。见this blog post。

    在 Java EE 7 中,我们为声明式事务管理以及 EJB 提供了神奇的 (:)) @Transactional 注解。

    【讨论】:

    • 谢谢,我正在寻找更直接的东西。我找到了一个将 UserTransaction 注入 CDI bean 的示例,但我找不到使用它来模拟 TransactionAttributeType.REQUIRES_NEW 行为的方法,因为它将事务信息保存在 ThreadLocal 中,如果我已经抛出异常在本地环境中进行了交易。
    • 仅供参考,我通过使用 @TransactionAttribute 注释创建一个新类来解决这个问题。由于新类是由 CDI 注入的,因此事务由容器处理(我更喜欢)。我确实发现互联网上可用的文档很少。
    • 您是否将您的课程注释为@Stateless? JavaEE 6 中的 @TransactionAttribute 注释仅适用于 EJB。
    猜你喜欢
    • 2015-02-25
    • 2011-02-19
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多