首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将narayana事务管理器与hibernate集成

将narayana事务管理器与hibernate集成
EN

Stack Overflow用户
提问于 2016-09-29 23:08:44
回答 1查看 567关注 0票数 2

我的独立应用程序已经将narayana事务管理器用于JTA事务和其他XA资源,现在我还在尝试将其与Hiberante集成。以便hibernate事务也在JTA事务作用域中执行-

hibernate.cfg.xml

代码语言:javascript
复制
 <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 -

代码语言:javascript
复制
registry.applySetting(AvailableSettings.JTA_PLATFORM,     "org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform");

registry.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY,     "jta");

下面是我开始交易的方式-

代码语言:javascript
复制
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()之后进行数据库更新?

EN

回答 1

Stack Overflow用户

发布于 2021-07-18 03:24:57

你已经很接近了。缺少的是使用事务管理器的JDBC连接登记,请参阅https://jbossts.blogspot.com/2017/12/narayana-jdbc-transactional-driver.html

这个额外的步骤是必要的,因为Narayana实现了JTA规范,而JTA使用的是XAResources,而不是JDBC connection。a)为JDBC连接提供XAResource需要一些粘合代码b)将资源征募到事务

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39773944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档