我在SOAP Web服务应用程序中使用Hibernate进行BMT JTA事务.hibernate读取工作正常,但插入或更新虽然返回没有错误,但数据库中的记录未更新或创建。在更新的情况下,我收到成功的Web服务消息,并且在插入的情况下,我接收具有分配的主键的新实体。但是在数据库中不存在这样的更新或新实体。最初在Websphere Liberty Profile Server 8.5上观察到此行为,因此考虑到websphere中的某些问题,然后我们将其移至JBoss App Server 7.2。但是观察到了相同的行为。
我调试了代码并且在流程中没有看到任何错误。提交事务并成功关闭hibernate会话。但是在Web服务响应返回时,我在JBoss服务器控制台中看到了这个错误
JBAS010152: APPLICATION ERROR: transaction still active in request with status 0
请注意,在Websphere Liberty或JBoss Server上使用Hibernates默认JDBC事务时,所有读写操作都可以正常工作。因此,两个服务器上都没有上述错误。
我的JBoss版本是JBoss 7.2.0.Final-redhat-8和Hibernate版本是4.1.8.Final。我的 hibernate.properties 文件适用于JTA。
connection.autocommit=false
hibernate.default_schema=CLI_MANG
dialect=org.hibernate.dialect.DB2Dialect
hibernate.connection.datasource=java:/comp/env/jdbc/ClientManagementDS
hibernate.transaction.jta.platform=
org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform
hibernate.transaction.factory_class=
org.hibernate.engine.transaction.internal.jta.JtaTransactionFactory
hibernate.current_session_context_class=jta
正如您所看到的,我们使用DB2作为数据库。我的XA数据源是在JBoss的standalone.xml中定义的,它使用JBoss的db2jcc4.jar作为驱动程序。
感谢任何帮助 感谢