使用Hibernate和JBoss的JTA BMT事务只执行数据库读取而不执行写操作

时间:2014-08-29 17:15:36

标签: hibernate jboss

我在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作为驱动程序。

感谢任何帮助 感谢

0 个答案:

没有答案