【发布时间】: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 - 你指的是bugzilla.redhat.com/show_bug.cgi?id=927895
-
@JohnAment - RedHat 支持坚持认为这是一个 Seam3/DeltaSpike 问题,他们不会支持。您能否详细说明您遇到的问题;可能导致复制者?谢谢。
标签: jakarta-ee jpa cdi transactional seam3