首页 > 代码库 > Java事务(八) - 分布式事务 - spring + JTA + atomikos

Java事务(八) - 分布式事务 - spring + JTA + atomikos

一. 前言:

上一篇博客中,我们使用jotm实现了分布式事务, 本篇将使用atomikos实现。

基本的代码都是一样的,就是配置略有不同。


二. 代码实现:

1. 代码结构图:


2. 配置文件:ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 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.xsd 
                     http://www.springframework.org/schema/tx 
                     http://www.springframework.org/schema/tx/spring-tx.xsd 
                     http://www.springframework.org/schema/aop 
                     http://www.springframework.org/schema/aop/spring-aop.xsd">
	
	<!-- 数据库1 -->
	<bean id="db1" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
        <property name="uniqueResourceName">   
            <value>mysql/main</value>   
        </property>   
        <property name="xaDataSourceClassName">   
            <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
        </property>   
        <property name="xaDataSourceProperties">   
            <value>URL=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8;user=root;password=root</value>   
        </property>   
        <property name="exclusiveConnectionMode">   
            <value>true</value>   
        </property>   
        <property name="connectionPoolSize">   
            <value>3</value>   
        </property>   
        <property name="validatingQuery">   
            <value>SELECT 1</value>   
        </property>   
    </bean>       
    
    <!-- 数据库2 -->
    <bean id="db2" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
        <property name="uniqueResourceName">   
            <value>mysql/secondary</value>   
        </property>   
        <property name="xaDataSourceClassName">      
            <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
        </property>
        <property name="xaDataSourceProperties">   
            <value>URL=jdbc:mysql://localhost:3306/log?useUnicode=true&characterEncoding=utf-8;user=root;password=root</value>   
        </property>
        <property name="exclusiveConnectionMode">   
            <value>true</value>   
        </property>
        <property name="connectionPoolSize">   
            <value>3</value>   
        </property>
        <property name="validatingQuery">
            <value>SELECT 1</value>   
        </property>   
    </bean>     
    
    <bean id="userTransactionManager" init-method="init" destroy-method="close"
    	class="com.atomikos.icatch.jta.UserTransactionManager">   
        <property name="forceShutdown" value=http://www.mamicode.com/"true" />   >

其他的代码请参见上一篇博客。

源码下载: http://download.csdn.net/detail/zdp072/7950391


Java事务(八) - 分布式事务 - spring + JTA + atomikos