Java 无法在分布式事务中调用Connection.commit
我正在使用Weblogic 12c,在应用程序中提交分布式事务时出现以下错误 “java.sql.SQLException:无法在分布式事务中调用Connection.commit。提交分布式事务时,事务管理器将提交资源管理器” 引发异常的代码部分是:Java 无法在分布式事务中调用Connection.commit,java,weblogic,weblogic12c,jta,xa,Java,Weblogic,Weblogic12c,Jta,Xa,我正在使用Weblogic 12c,在应用程序中提交分布式事务时出现以下错误 “java.sql.SQLException:无法在分布式事务中调用Connection.commit。提交分布式事务时,事务管理器将提交资源管理器” 引发异常的代码部分是: Session sessionNew = HibernateService.getService().getSession(); sessionNew.connection().commit(); 这个问题已经被问过好几次了,但我寻求的解决方
Session sessionNew = HibernateService.getService().getSession();
sessionNew.connection().commit();
这个问题已经被问过好几次了,但我寻求的解决方案是不同的。
最常见的解决方案是禁用XA事务以解决问题。
但我的应用程序包含的不仅仅是数据库、JMS等资源。
任何人都可以提出一个解决方案,而不是上面提到的
此外,我还需要了解JTA事务超时值与上述错误之间是否存在任何关系
非常感谢。如果您将@TransactionManagement(TransactionManagementType.CONTAINER)切换到@TransactionManagement(TransactionManagementType.BEAN),则很可能不会再发生此错误
因此,定义提交时定义的是什么,而不是服务器。如果确实需要XA事务,则必须让事务管理器提交或回滚事务。您的代码不应显式调用commit或rollback。@EmmanuelCollin,谢谢。如果我删除第二行,它不会影响应用程序吗?上述错误与JTA事务超时值之间是否有关系?错误消息与JTA超时值之间没有关系。