zoukankan      html  css  js  c++  java
  • spring多数据源事务配置

    项目中遇到多数据源问题,

    对于每个数据源需要单独完成事务控制,

    这里记录下具体实现方法

    在spring配置文件中

    定义两个数据源

      <!-- 数据源定义(spring-jndi) -->
        <jee:jndi-lookup id="datasourceX" jndi-name="jdbc/x" />
       <!-- 数据源定义(spring-jndi) -->
        <jee:jndi-lookup id="datasourceY" jndi-name="jdbc/y" />

    定义了两个事务管理器:transactionManagerX,transactionManagerY,分管两个数据源datasourceX和datasourceY.

    <bean id="transactionManagerX" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="datasourceX" />
        </bean>
        
        <bean id="transactionManagerY" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="datasourceY" />
        </bean>

      <!-- 使用annotation定义事务驱动 -->
        <tx:annotation-driven transaction-manager="transactionManagerX" />

     <tx:annotation-driven transaction-manager="transactionManagerY" />

    在使用时使用如下方式,区分事务是对于哪一个数据源做操作:

       @Transactional(value = "transactionManagerX", rollbackFor = Exception.class)

       @Transactional(value = "transactionManagerY", rollbackFor = Exception.class)

    另外做下记录,如果需要在多数据源之间完成事务性操作,需要使用Java/JTA 事务处理工具,例如:Atomikos!

  • 相关阅读:
    angular2^ typescript 将 文件和Json数据 合并发送到服务器(1.客户端处理)
    错误的尝试:回射程序改进2
    XML Schema笔记
    回射程序改进1
    DTD笔记
    XML语法笔记
    判断IPv6地址合法性
    线程相关函数(POSIX线程):
    使用string实现一个用于储存那些太大而无法使用 long long 的数
    基本SCTP套接字编程常用函数
  • 原文地址:https://www.cnblogs.com/widget90/p/8017105.html
Copyright © 2011-2022 走看看