【发布时间】:2017-02-07 23:52:02
【问题描述】:
我的独立应用程序已经使用 narayana 事务管理器与其他 XA 资源进行 JTA 事务,现在我也在尝试将它与 Hiberante 集成。这样休眠事务也可以在 JTA 事务范围内执行-
hibernate.cfg.xml
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">
<!-- org.hibernate.transaction.JBossTransactionManagerLookup -->com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple
</property>
<property name="hibernate.current_session_context_class">jta</property>
其他java conf -
registry.applySetting(AvailableSettings.JTA_PLATFORM, "org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform");
registry.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta");
这是我开始交易的方式-
TransactionManager transactionManager =com.arjuna.ats.jta.TransactionManager.transactionManager();
transactionManager.begin();
Session session = currentSessionContext.currentSession();
session.joinTransaction();
System.out.println("is joined "+session.isJoinedToTransaction());
session.update(obj);
transactionManager.commit();
session.close();
sessionFactory.close();
现在的问题是 db 仅在调用 sessionFactory.close() 后才显示会话的变化 但不应该在 transactionManager.commit() 处。
如何配置它以在 transactionManager.commit() 之后更新数据库?
【问题讨论】:
标签: hibernate jboss transactions jta