Java 无法在分布式事务中调用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(); 这个问题已经被问过好几次了,但我寻求的解决方

我正在使用Weblogic 12c,在应用程序中提交分布式事务时出现以下错误

“java.sql.SQLException:无法在分布式事务中调用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超时值之间没有关系。