我有以下情况:
当线程的异步处理完成时,在第15行抛出异常,并显示以下消息:事务处于非活动状态。
请注意,我设置了事务超时,因为只有在执行方法“doAnything()”几分钟后才会发生错误。执行一两分钟后,错误就不会发生。但是,设置超时不起作用。
有什么想法吗?
感谢。
答案 0 :(得分:0)
这个bean是非法的 - 你无法启动一个新线程。这样做会落在容器的后面,导致您失去事务管理,安全管理等等。
有关how transaction propagation works under the covers
的详细信息,请参阅此答案请参阅此答案,了解如何use @Asynchronous instead of starting your own threads
注意,即使使用@Asynchronous
,您也无法拥有跨多个线程的事务。没有TransactionManager
可以支持它,因此规范不允许它。