zoukankan      html  css  js  c++  java
  • spring + ibatis 多数据源事务(分布式事务)管理配置方法(转)

    spring + ibatis 多数据源事务(分布式事务)管理配置方法(转)
    1、我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法。官方的说法是:spring 的分布式事务。明白了这个概念,问题就好解决了。
    
    2、分布式事务的应用场景:工程中使用两个及以上数据库中,就要考虑使用分布式事务管理,否则事务不能回滚。
    
    3、现有两种开源的第三方jar支持spring的分布式事务管理,它们分别是:jotm和Atomikos。通过google可以找到下载的链接,其中atomikos的下载需要先填写email信息,再登录email找到链接去下载。下载地址分别:
    
    1、http://jotm.objectweb.org/
    
    2、http://www.atomikos.com/Main/InstallingTransactionsEssentials
    
    我使用的是jotm。
    
    4、基于spring+ibatis的环境下配置jotm的方法很简单。只城要修改spring数据源的配置及事务的配置及可。以下是我的配置,供参考。
    
    Xml代码  
           
    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">  
         <property name="defaultTimeout" value="500000"/>  
    </bean>    
      
    <bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">  
         <property name="dataSource">  
                 <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">  
                         <property name="transactionManager" ref="jotm"/>  
                         <property name="driverName" value="${driverClass}"/>  
                         <property name="url" value="${jdbcUrl}"/>  
                 </bean>  
         </property>  
         <property name="user" value="${user}"/>  
         <property name="password" value="${password}"/>  
    </bean>  
      
    <bean id="dataSourceBbs" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">  
         <property name="dataSource">  
                 <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">  
                         <property name="transactionManager" ref="jotm"/>  
                         <property name="driverName" value="${bbs.driverClass}"/>  
                         <property name="url" value="${bbs.jdbcUrl}"/>  
                 </bean>  
         </property>  
         <property name="user" value="${bbs.user}"/>  
         <property name="password" value="${bbs.password}"/>  
    </bean>      
      
    <!-- JTA事务管理器 -->  
    <bean id="myJtaManager" class="org.springframework.transaction.jta.JtaTransactionManager">  
            <property name="userTransaction" ref="jotm" />  
    </bean>    
      
     <!-- 事务切面配置 -->  
     <aop:config>  
             <aop:pointcut id="serviceOperation" expression="execution(* com.bohai.service.impl.*.*(..))"/>  
             <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"  order="0" />  
     </aop:config>  
        
     <!-- 通知配置 -->  
     <tx:advice id="txAdvice" transaction-manager="myJtaManager">  
             <tx:attributes>  
                     <tx:method name="delete*" propagation="REQUIRED"  />  
                     <tx:method name="save*" propagation="REQUIRED"  />  
                     <tx:method name="update*" propagation="REQUIRED"  />  
                     <tx:method name="*" propagation="REQUIRED"  />  
                     <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>  
        <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>  
        <tx:method name="fetch*" propagation="SUPPORTS" read-only="true"/>  
        <tx:method name="*_noTrans" propagation="NOT_SUPPORTED"/>  
             </tx:attributes>  
     </tx:advice>    
     5、jtom 还需要一个配置文件 carol.properties ,内容是:
    
    Java代码  
    # do not use CAROL JNDI wrapper           
    carol.start.jndi=false           
               
    # do not start a name server           
    carol.start.ns=false           
               
    # Naming Factory        
    carol.jndi.java.naming.factory.url.pkgs=org.apache.naming   
     
    
    文件放在classpath下面,也就是src下面。
    
    6、需要jtom的以下jar:
    
    转载自:http://www.blogjava.net/hao446tian/

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    第一周、学习嵌入式
    centos7及xfce桌面环境安装,远程工具配置使用方法
    第一次作业
    2018下C语言基础课第1次作业
    第二次作业
    第一次作业
    第0次作业
    博客园第五次作业
    博客园第四次作业
    博客园第三次作业
  • 原文地址:https://www.cnblogs.com/weiguo21/p/4823990.html
Copyright © 2011-2022 走看看