spring结合 atomikos 使用

 
atomikos 所需jar :

1.transactions-jdbc.jar

2.transactions.jar

3.transactions-jta.jar

4.transactions-api.jar 

5.atomikos-util.jar 

jta.properties 配置文件 放在src目录即可

com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory
com.atomikos.icatch.console_file_name = tm.out 
com.atomikos.icatch.log_base_name = tmlog 
com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm 
com.atomikos.icatch.console_log_level =INFO

spring配置文件

<!--   tomcat  数据源方式
    <jee:jndi-lookup id="dataSource1" jndi-name="jdbc/t1"/>
    <jee:jndi-lookup id="dataSource2" jndi-name="jdbc/t2"/>

-->


    
    
      <!--  读取数据库连接配置文件 -->
     <bean id="propertyConfig"
         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                 <value>classpath:jdbc.properties</value>
             </list>
         </property>
     </bean>
    
    
    <!-- 第一个数据库   -->  
    <bean id="dataSource1" class="com.atomikos.jdbc.AtomikosDataSourceBean"  
        init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="mysql/product1" />
        <property name="xaDataSourceClassName"
            value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />  
        <property name="xaProperties">
            <props>
                <prop key="user">${jdbc.username.a}</prop>
                <prop key="password">${jdbc.password.a}</prop>
                <prop key="URL">${jdbc.url.a}</prop>
            </props>
        </property>
        <property name="testQuery">  
            <value>SELECT 1</value>  
        </property>
    </bean>  
    <!-- 第二个数据库-->  
    <bean id="dataSource2" class="com.atomikos.jdbc.AtomikosDataSourceBean"  
        init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="mysql/product2" />
        <property name="xaDataSourceClassName"
            value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />  
        <property name="xaProperties">
            <props>
                <prop key="user">${jdbc.username.b}</prop>
                <prop key="password">${jdbc.password.b}</prop>
                <prop key="URL">${jdbc.url.b}</prop>
            </props>
        </property>
        <property name="testQuery">  
            <value>SELECT 1</value>  
        </property>
    </bean> 
    
    <!-- SessionFactory -->
    <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource1" /> 
    </bean> 
    
    <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource2" /> 
    </bean>  
  
  <!--      
           spring管理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> 
     
    <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">  
        <property name="transactionManager" ref="atomikosTransactionManager"/> 
        <property name="userTransaction" ref="atomikosUserTransaction" /> 
        <property name="allowCustomIsolationLevels" value="true"/> 
    </bean> 
    
    <aop:aspectj-autoproxy /> 
    
    <aop:config  proxy-target-class="true">  
        <aop:advisor pointcut="execution(* secoo.server.impl.*.*(..))" 
            advice-ref="txAdvice" /> 
        </aop:config> 
  
    <tx:advice id="txAdvice" transaction-manager="springTransactionManager">  
        <tx:attributes> 
            <tx:method name="insert*" propagation="REQUIRED" read-only="true" />
            <tx:method name="delete*" propagation="REQUIRED" read-only="true" />
            <tx:method name="update*" propagation="REQUIRED" read-only="true" />
            <tx:method name="*" propagation="SUPPORTS" rollback-for="Exception"  />  
        </tx:attributes>  
    </tx:advice>

 
 

<!—mapping 配置 并且指定 用哪个ssessio工厂 -->

<bean id="product1" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="secoo.mapper.Product1"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory1"></property>
</bean>

<bean id="product2" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="secoo.mapper.Product2"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory2"></property>
</bean>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值