Spring 3、TransactionManagement、Tomcat 和更改数据源 midflight

标签 spring tomcat transactions datasource

我有一个使用@Transactional 注释进行注释的方法。

问题是,代码运行所针对的数据源是可以改变的!简而言之,是否可以在应用程序运行时更改事务的数据源?

深度: 该应用程序允许用户选择一个数据库来运行 sql。他们可以在运行时更改数据库。我希望应用程序在事务中运行所有 sql - sql 组始终针对同一数据源,所以这不是问题。

问题是,我不知道如何更改事务以使用不同的数据源。不同的文章建议使用 JTATransactionManager,但我们在 tomcat 上,所以没有骰子。

是否有一种简单的方法可以做到这一点,或者我们是否需要放弃 @Transactional 注释并做其他事情?

如果是这样,那“其他东西”是什么?

哦,数据库是db2,如果有什么用的话!

谢谢!

最佳答案

可能的解决方案之一

  1. 在spring config中配置所有可能的数据源

    一个。 DB1 的数据源 1 b.用于 DB2 等的数据源 2.

  2. 在服务类中维护上述数据源的映射,并根据映射中的某些键从选定的数据源中创建 spring 的 JDBCTemplate。

关于Spring 3、TransactionManagement、Tomcat 和更改数据源 midflight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661538/

相关文章:

java - Servlet 无法解析

java - 部署自定义 Spring XD 处理器时出错

java - 如何从属性文件中导入值并在注释中使用它?

java - 部署期间的 Hibernate 异常

java - @Transactional 是做什么的?

ruby-on-rails - Ruby on Rails -- 计数器缓存事务安全吗?

spring - 有什么理由使用接口(interface)(Java EE 或 Spring 和 JPA)

java - 日期无法解析为类型

java - eclipse无法启动我的tomcat服务器,如何开启服务器

javascript - Node.js - 如何使用 Sequelize 事务