gpt4 book ai didi

grails - 如何配置grails以将单个事务管理器用于多个数据源?

转载 作者:行者123 更新时间:2023-12-02 14:29:46 25 4
gpt4 key购买 nike

我有一个使用两个不同数据源的Grails 3.1.5应用程序。我的意图是在这两个数据源之间使用两阶段提交/ XA事务。我在application.yml中将它们声明为:

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中运行该应用程序时,我注意到Spring正在尝试使用ChainedTransactionManager,因为那里有多个事务管理器bean: ChainedTransactionManagerPostProcessor.getTransactionManagerBeanNames(registry)返回 [transactionManager, transactionManager_other]

有没有一种方法可以配置grails / spring引导,使其仅创建一个事务管理器并将其用于两个数据源?

最佳答案

您可以通过在transactionManager中指定grails-app/conf/spring/resources.groovy bean来覆盖所使用的事务管理器

您需要在配置中配置org.springframework.transaction.jta.JtaTransactionManager并将hibernate.transaction.jta.platform设置为org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform

您可能还必须将hibernate.current_session_context_class设置为org.springframework.orm.hibernate5.SpringJtaSessionContext

关于grails - 如何配置grails以将单个事务管理器用于多个数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com