我有一个异步命令处理器模块,它产生了许多后台线程,这些线程读取DB记录,为每个记录加载一个命令(CDI Bean)并运行该命令。Arquillian使用Weld-SE容器测试运行良好。但是,当我将其放入JavaEE环境(作为EAPEAP6.1.1中的JBoss模块)时,@ transaction注释不会生效-后台方法在没有事务的情况下运行。因此,对实体的更改永远不会对数据库产生影响。
依赖于此消息传递模块的客户端模块在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?中提到的技巧,但不起作用。
你知道为什么会这样吗?
发布于 2015-04-08 16:57:37
我不确定您的项目结构,但您应该考虑到beans.xml只在它所在的bean归档中工作。因此,您必须在您希望它工作的每个Bean归档中激活拦截器(CDI 1.0)。使用CDI1.1,您可以全局启用拦截器。
https://stackoverflow.com/questions/20643500
复制相似问题