spring+ibatic+maven分布式事务

一:POM.xml

<!-- JTA事物所需配置 -->
  <dependency>
   <groupId>com.atomikos</groupId>
   <artifactId>transactions-jdbc</artifactId>
   <version>3.7.0</version>
  </dependency>
  <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.6.1</version>
  </dependency>
  <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.6.2</version>
  </dependency>

  <!-- JTA事物所需配置 -->

二:spring事物配置

<bean id="oracleDS2" class="com.atomikos.jdbc.AtomikosDataSourceBean" 
        init-method="init" destroy-method="close">  
        <description>oracle xa datasource</description>  
        <property name="uniqueResourceName">  
            <value>oracle_ds2</value>  
        </property>  
        <property name="xaDataSourceClassName">  
            <value>oracle.jdbc.xa.client.OracleXADataSource</value>  
        </property>  
        <property name="xaProperties">  
            <props>  
                <prop key="user">gadbusr</prop>  
                <prop key="password">gadbusr</prop>  
                <prop key="URL">jdbc:oracle:thin:@192.168.0.59:1521:techdb</prop>  
            </props>  
        </property>  
        <!-- 连接池里面连接的个数? -->   
        <property name="poolSize" value="3"/>  
    </bean>  
   
    <bean id="oracleDS1" class="com.atomikos.jdbc.AtomikosDataSourceBean" 
        init-method="init" destroy-method="close">  
        <description>oracle xa datasource</description>  
        <property name="uniqueResourceName">  
            <value>oracle_ds1</value>  
        </property>  
        <property name="xaDataSourceClassName">  
            <value>oracle.jdbc.xa.client.OracleXADataSource</value>  
        </property>  
        <property name="xaProperties">  
            <props>  
                <prop key="user">esdbusr</prop>  
                <prop key="password">esdbusr</prop>  
                <prop key="URL">jdbc:oracle:thin:@192.168.0.127:1521:esdb</prop>  
            </props>  
        </property>  
        <!-- 连接池里面连接的个数? -->   
        <property name="poolSize" value="3"/>  
    </bean>  

 

 

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

 <context:property-placeholder
  location="classpath:jdbc.properties,file:/app/SFiles/usb/install/saturn-config-est.properties" />
 <context:annotation-config />

 <!-- atomikos事务管理器 -->
 <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
  init-method="init" destroy-method="close">
  <description>UserTransactionManager</description>
  <property name="forceShutdown">
   <value>true</value>
  </property>
 </bean>

 <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
  <property name="transactionTimeout" value="300" />
 </bean>

 <!-- spring 事务管理器 -->
 <bean id="springTransactionManager"
  class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="transactionManager">
   <ref bean="atomikosTransactionManager" />
  </property>
  <property name="userTransaction">
   <ref bean="atomikosUserTransaction" />
  </property>
 </bean>

 <!-- spring 事务模板 我在项目当中用的是编程式事务 -->
 <bean id="transactionTemplate"
  class="org.springframework.transaction.support.TransactionTemplate">
  <property name="transactionManager">
   <ref bean="springTransactionManager" />
  </property>
 </bean>

 

 <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="oracleDS2" />
  <property name="typeAliasesPackage"
   value="com.huifu.est.common.dal.model2,com.huifu.est.common.dal.model.extdo2" />
  <property name="plugins">
   <list>
    <ref bean="mybatisCommonInterceptor2" />
   </list>
  </property>
 </bean>

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.huifu.est.common.dal.dao2" />
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory2" />
 </bean>

 <bean name="mybatisCommonInterceptor2" class="com.huifu.saturn.common.log.MybatisCommonInterceptor">
 </bean>

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="oracleDS1" />
  <property name="typeAliasesPackage"
   value="com.huifu.est.common.dal.model,com.huifu.est.common.dal.model.extdo" />
  <property name="plugins">
   <list>
    <ref bean="mybatisCommonInterceptor" />
   </list>
  </property>
 </bean>

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.huifu.est.common.dal.dao" />
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
 </bean>

 <bean name="mybatisCommonInterceptor" class="com.huifu.saturn.common.log.MybatisCommonInterceptor">
 </bean>
 <!-- spring atomikos 配置 结束 -->

 

 

</beans>

 

三:编程式事物code

@Override
    public int updateTest() {
        try {
            transactionTemplate.execute(new TransactionCallback<String>() {
                @Override
                public String doInTransaction(TransactionStatus status) {
                    MailLogDO mailLogDo = new MailLogDO();
                    mailLogDo.setMailId("AD014750097AD");
                    mailLogDo.setAcctDate("20130317");
                    int i = mailLogMapper.updateByMailId(mailLogDo);
                    System.out.println("xx=" + i);
                    FrzLogDO frzLogDo = new FrzLogDO();
                    frzLogDo.setSysSeqId("00489671");
                    frzLogDo.setTransAmt("51.00");
                    i = frzLogMapper.updateById(frzLogDo);
                    System.out.println("xx=" + i);
                    return null;
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }

        return 0;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值