2016-10-03 13 views
0

2つの異なるデータソースを使用するGrails 3.1.5アプリケーションがあります。私の意図は、これら2つのデータソース間の2フェーズコミット/ XAトランザクションを使用することです。 ChainedTransactionManagerPostProcessor.getTransactionManagerBeanNames(registry)戻り[transactionManager, transactionManager_other]:私は、JBoss EAP 6内でアプリケーションを実行すると複数のデータソースに対して単一のトランザクションマネージャを使用するように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" 

は、しかし、私は春がChainedTransactionManagerがあるため、複数のトランザクションマネージャ豆を使用しようとしていることがわかりますように私はapplication.ymlでそれらを宣言しました。

Grails/Springブートを構成して、1つのトランザクションマネージャを作成して両方のデータソースに使用する方法はありますか?

答えて

1

あなたがorg.springframework.transaction.jta.JtaTransactionManagerを設定し、構成にorg.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatformhibernate.transaction.jta.platformを設定する必要がありますgrails-app/conf/spring/resources.groovy

transactionManager Beanを指定することで使用されるトランザクションマネージャを無効にすることができます。

あなたはおそらくもorg.springframework.orm.hibernate5.SpringJtaSessionContext

+0

hibernate.current_session_context_classを設定する必要がありますが、私はどこか別の場所application.yml、またはに追加これらのプロパティはありますか? ...あなたが「JtaTransactionManagerを設定する」ときには、それらのプロパティを追加することだけを意味するのでしょうか、それとももっと関与しているのでしょうか?私がオンラインで検索したときにこれを設定するための具体的な手順を見つけることは非常に困難でした。 – GreenGiant

+0

私も混乱しているのは、[documentation](http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/transaction/jta/JtaTransactionManager.html)がJtaTransactionManagerのベンダー固有のサブクラスがJBossに必要でないことを示しています: "典型的なJTAトランザクションでは、すべてのJava EEサーバで移植可能な単純なJtaTransactionManager定義が必要です。サーバ固有のTransactionManagerを設定する必要はありませんこの種のJTAの使用法を検索します。 – GreenGiant

+0

'hibernate.transaction.jta.platform'と' hibernate.current_session_context_class'は 'grails-app/conf/application.yml'に設定されていますyes –

関連する問題