我是CDI和EJB的新手,我刚刚创建了一个jboss Web应用程序。此外,我还希望这个应用程序处理rabbitmq消息。在处理这些时,我想做一些持久性工作,但是,因为我一直在监听来自使用@Startup注释启动的应用程序范围bean的rabbitmq消息,所以我无法在此内部提交任何事务范围的种类,也就是说,当我离开应用程序范围时,我将从此范围实例化的每个bean都将是应用程序作用域。当我尝试执行em.getTransaction()和em.commit()时,代码爆炸抱怨我无法在JTA事务下调用getTransaction(),当我使用User事务时,每个操作似乎都被放到同一个事务上,直到它最终被回滚,或者有错误抱怨正在进行的交易......
答案 0 :(得分:1)
CDI bean不像EJB那样支持开箱即用的事务。所以你可以选择:
根据您提供的信息,确实很难为您提供更多详细信息。但是,从概念层面来看,上述方法之一就可以解决问题。
此外,event scope
的概念似乎令人困惑。我会说你不需要它。上面的方法之一就可以了。另外,请查看CDI events。