EJB Singleton - 线程完成后“事务处于非活动状态”

时间:2012-03-01 19:32:31

标签: multithreading transactions singleton ejb

我有以下情况:

enter image description here

当线程的异步处理完成时,在第15行抛出异常,并显示以下消息:事务处于非活动状态。

请注意,我设置了事务超时,因为只有在执行方法“doAnything()”几分钟后才会发生错误。执行一两分钟后,错误就不会发生。但是,设置超时不起作用。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这个bean是非法的 - 你无法启动一个新线程。这样做会落在容器的后面,导致您失去事务管理,安全管理等等。

有关how transaction propagation works under the covers

的详细信息,请参阅此答案

请参阅此答案,了解如何use @Asynchronous instead of starting your own threads

注意,即使使用@Asynchronous,您也无法拥有跨多个线程的事务。没有TransactionManager可以支持它,因此规范不允许它。