我有一個使用兩個不同數據源的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'是 –