我有一个使用两个不同数据源的Grails 3.1.5应用程序。我的意图是在这两个数据源之间使用两阶段提交/ XA事务。我宣布他们application.yml为:如何配置grails使用单个事务管理器来处理多个数据源?
dataSources:
dataSource:
dialect: "org.hibernate.dialect.Oracle10gDialect"
jmxExport: false
jndiName: "java:/applicationUserDS"
other:
dialect: "org.hibernate.dialect.Oracle10gDialect"
jmxExport: false
jndiName: "java:/otherUserDS"
name: "other"
然而,当我运行的JBoss EAP 6内的应用程序,我注意到,春天正在尝试使用ChainedTransactionManager因为有多个事务管理豆类:ChainedTransactionManagerPostProcessor.getTransactionManagerBeanNames(registry)
回报[transactionManager, transactionManager_other]
。
有没有办法配置grails/spring启动,以便它只创建一个事务管理器并将它用于两个数据源?
那些是我添加到application.yml性质,或别的地方? ......当你“配置一个JtaTransactionManager”时,你的意思是添加这些属性还是涉及更多?我在网上搜索时很难找到配置这个的具体步骤。 – GreenGiant
我还困惑的是,[文档](http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/transaction/jta/JtaTransactionManager.html)似乎以表明JBoss不需要特定于供应商的JtaTransactionManager子类:“对于典型的JTA事务,只需要一个普通的JtaTransactionManager定义,可以跨所有Java EE服务器移植,不需要配置特定于服务器的TransactionManager查找这种JTA用法。“ – GreenGiant
在'grails-app/conf/application.yml'中配置'hibernate.transaction.jta.platform'和'hibernate.current_session_context_class'是 –