【问题标题】:Seam 3 @Transactional annotation not working in Java EE environmentSeam 3 @Transactional 注释在 Java EE 环境中不起作用
【发布时间】:2014-01-05 18:24:18
【问题描述】:

我有一个异步命令处理器模块,它衍生出许多读取 DB 记录的后台线程,每条记录加载一个命令(CDI Bean)并运行该命令。使用 Weld-SE 容器的 Arquillian 测试工作正常。但是,当我将它放在 JavaEE 环境中(作为 JBoss EAP 6.1.1 中的 JBoss 模块)时,@Transactional 注释不会生效 - 后台方法在没有事务的情况下运行。因此,对实体的更改永远不会对数据库产生影响。

依赖于这个消息传递模块的客户端模块,在 bean.xml 中有这个

<beans xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:s="urn:java:ee"
  xmlns:t="urn:java:org.jboss.seam.transaction"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">

   <interceptors>
     <class>org.jboss.seam.transaction.TransactionInterceptor</class>
   </interceptors>
</beans>

我尝试了Seam @Transactional annotation not working? 中提到的技巧,但没有奏效。

知道为什么会这样吗?

【问题讨论】:

  • 这实际上是 EAP 6.1.1 中的一个错误。请向 RedHat 提出支持问题。
  • @JohnAment - 为什么你认为这是一个 EAP 错误? EAP 6 不附带/不支持 Seam 3。
  • 在 EAP 中加载拦截器的问题。
  • @JohnAment - RedHat 支持坚持认为这是一个 Seam3/DeltaSpike 问题,他们不会支持。您能否详细说明您遇到的问题;可能导致复制者?谢谢。

标签: jakarta-ee jpa cdi transactional seam3


【解决方案1】:

我不确定你的项目结构,但你应该考虑到 beans.xml 只在它所在的 bean 存档中工作。所以你必须在你希望它工作的每个 Bean 存档中激活拦截器( CDI 1.0)。使用 CDI 1.1,您可以全局启用拦截器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多