项目进行读写分离及分库分表,在一个业务中,在一个事务中处理时候将切换多个数据源,需要保证同一事务多个数据源数据的一致性。

        此处使用atomikos来实现(附源码)。另外需要注意以下:

       1:spring3.0之后不再支持jtom[jta]了,支持第三方开源软件atomikos(http://www.atomikos.com/)来实现. 
       2:org.springframework.transaction.jta.JotmFactoryBean类,spring-tx-2.5.6.jar中有此类,spring-tx-3.0.0.RELEASE.jar之后没有此类。
       3:atomikos事务控制框架,其中看到有3种数据源,分别是,SimpleDataSourceBean,AtomikosDataSourceBean,AtomikosNonXADataSourceBean。
            1、SimpleDataSourceBean: 这个是最简单地数据源配置,需要配置XA驱动。
            2、AtomikosDataSourceBean:  分布式数据源,Atomikos实现的数据源,需要配置XA驱动,推荐此配置,可以配置连接池的信息。
            3、AtomikosNonXADataSourceBean: 非分布式数据源,该数据源配置需要普通JDBC的驱动,可以配置连接池:
       4:Atomikos支持XA(全局事务)和NON-XA(非全局事务),NON-XA[nonxadatasource]效率高于XA。XA事务往往是包括多个数据源的全局事务,非XA是单个数据源的.
       5:XA连接是一个JTA事务中的参与者。XA连接不支持JDBC的自动提交特性。也就是说应用程序不必在xadatasource[XA]连接上调用java.sql.Connection.commit()或java.sql.Connection.rollback();而应用程序应该使用UserTransaction.begin(),UserTransaction.commit()和UserTransaction.rollback().

看看pom.xml依赖:


[html] view plain copy photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

  1. <!-- transaction -->  

  2. <dependency>  

  3.     <groupId>org.springframework</groupId>  

  4.     <artifactId>spring-tx</artifactId>  

  5.     <version>4.2.5.RELEASE</version>  

  6. </dependency>  

  7. <dependency>  

  8.     <groupId>javax.transaction</groupId>  

  9.     <artifactId>jta</artifactId>  

  10.     <version>1.1</version>  

  11. </dependency>  

  12. <dependency>  

  13.     <groupId>com.atomikos</groupId>  

  14.     <artifactId>atomikos-util</artifactId>  

  15.     <version>4.0.2</version>  

  16. </dependency>  

  17. <dependency>  

  18.     <groupId>com.atomikos</groupId>  

  19.     <artifactId>transactions</artifactId>  

  20.     <version>4.0.2</version>  

  21. </dependency>  

  22. <dependency>  

  23.     <groupId>com.atomikos</groupId>  

  24.     <artifactId>transactions-jta</artifactId>  

  25.     <version>4.0.2</version>  

  26. </dependency>  

  27. <dependency>  

  28.     <groupId>com.atomikos</groupId>  

  29.     <artifactId>transactions-jdbc</artifactId>  

  30.     <version>4.0.2</version>  

  31. </dependency>  

  32. <dependency>  

  33.     <groupId>com.atomikos</groupId>  

  34.     <artifactId>transactions-api</artifactId>  

  35.     <version>4.0.2</version>  

  36. </dependency>  

  37. <dependency>  

  38.     <groupId>cglib</groupId>  

  39.     <artifactId>cglib-nodep</artifactId>  

  40.     <version>3.2.2</version>  

  41. </dependency>  

[html] view plain copy

  1. <!-- transaction -->  

  2. <dependency>  

  3.     <groupId>org.springframework</groupId>  

  4.     <artifactId>spring-tx</artifactId>  

  5.     <version>4.2.5.RELEASE</version>  

  6. </dependency>  

  7. <dependency>  

  8.     <groupId>javax.transaction</groupId>  

  9.     <artifactId>jta</artifactId>  

  10.     <version>1.1</version>  

  11. </dependency>  

  12. <dependency>  

  13.     <groupId>com.atomikos</groupId>  

  14.     <artifactId>atomikos-util</artifactId>  

  15.     <version>4.0.2</version>  

  16. </dependency>  

  17. <dependency>  

  18.     <groupId>com.atomikos</groupId>  

  19.     <artifactId>transactions</artifactId>  

  20.     <version>4.0.2</version>  

  21. </dependency>  

  22. <dependency>  

  23.     <groupId>com.atomikos</groupId>  

  24.     <artifactId>transactions-jta</artifactId>  

  25.     <version>4.0.2</version>  

  26. </dependency>  

  27. <dependency>  

  28.     <groupId>com.atomikos</groupId>  

  29.     <artifactId>transactions-jdbc</artifactId>  

  30.     <version>4.0.2</version>  

  31. </dependency>  

  32. <dependency>  

  33.     <groupId>com.atomikos</groupId>  

  34.     <artifactId>transactions-api</artifactId>  

  35.     <version>4.0.2</version>  

  36. </dependency>  

  37. <dependency>  

  38.     <groupId>cglib</groupId>  

  39.     <artifactId>cglib-nodep</artifactId>  

  40.     <version>3.2.2</version>  

  41. </dependency>  



分布式事务操作之Spring+JTA可参照: http://www.cnblogs.com/wangyong/p/4174326.html
Atomikos 中文说明文档:http://blog.csdn.net/sun8288/article/details/8674016

源代码:Spring多数据源分布式事务管理

demo有需要的可以下载:https://github.com/zmx729618/jta/


网友评论

更多精彩分享

游戏论坛模拟-Java培训机构,青岛Java培训,青岛计算机培训,软件编程培训,seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训,Java培训游戏论坛模拟