1.现有方案

a.atomikos

b.jotm

说明:spring3.0已将jotm的支持踢掉

2.使用atomikos时的pom.xml内容

  1. <!-- 分布式事务支持-atomikos-begin -->
  2. <dependency>
  3. <groupId>javax.transaction</groupId>
  4. <artifactId>jta</artifactId>
  5. <version>1.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.atomikos</groupId>
  9. <artifactId>transactions</artifactId>
  10. <version>3.9.1</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.atomikos</groupId>
  14. <artifactId>transactions-api</artifactId>
  15. <version>3.9.1</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.atomikos</groupId>
  19. <artifactId>transactions-jta</artifactId>
  20. <version>3.9.1</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.atomikos</groupId>
  24. <artifactId>transactions-jdbc</artifactId>
  25. <version>3.9.1</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.atomikos</groupId>
  29. <artifactId>atomikos-util</artifactId>
  30. <version>3.9.1</version>
  31. </dependency>
  32. <!-- 分布式事务支持-atomikos-end -->

3.使用atomikos时不能使用不支持jta的连接池如c3p0

4.spring配制如下:

  1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  2. <property name="location" value="classpath:db.properties"/>
  3. </bean>
  4. <bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" lazy-init="true">
  5. <property name="uniqueResourceName" value="dataSource" />
  6. <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
  7. <property name="xaProperties">
  8. <props>
  9. <prop key="url">${db.url}</prop>
  10. <prop key="user">${db.username}</prop>
  11. <prop key="password">${db.password}</prop>
  12. </props>
  13. </property>
  14. <property name="poolSize" value="10"/>
  15. <property name="maxPoolSize" value="100"/>
  16. </bean>
  17. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  18. <property name="dataSource">
  19. <ref bean="dataSource" />
  20. </property>
  21. </bean>
  22.  
  23. <bean id="userTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp" init-method="init" destroy-method="shutdownForce">
  24. <constructor-arg>
  25. <props>
  26. <prop key="com.atomikos.icatch.service">com.atomikos.icatch.standalone.UserTransactionServiceFactory</prop>
  27. </props>
  28. </constructor-arg>
  29. </bean>
  30.  
  31. <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close" depends-on="userTransactionService">
  32. <property name="forceShutdown" value="false" />
  33. </bean>
  34.  
  35. <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" depends-on="userTransactionService">
  36. <property name="transactionTimeout" value="300" />
  37. </bean>
  38.  
  39. <bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" depends-on="userTransactionService">
  40. <property name="transactionManager" ref="atomikosTransactionManager" />
  41. <property name="userTransaction" ref="atomikosUserTransaction" />
  42. </bean>
  43.  
  44. <tx:annotation-driven transaction-manager="jtaTransactionManager" />

5.service里采用标签来实现事务如下:

  1. @Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
  2. public void TestTransaction() throws Exception{
  3. }

6.特别说明:

有人提出:使用spring的代理datasource来让spring管理事务,性能问题解决,提高8倍,见下面的连接

http://blog.sina.com.cn/s/blog_53765cf9010176zx.html

我还没有证实,找时间来看一下

java分布式事务的更多相关文章

  1. JAVA分布式事务原理及应用(转)

      JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据. JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目 ...

  2. JAVA分布式事务原理及应用

    JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JDBC驱动程序的JTA支持极大地增强了数据访问能力. 本文的目的是要 ...

  3. [java][db]JAVA分布式事务原理及应用

    JTA(Java Transaction API)同意应用程序运行分布式事务处理--在两个或多个网络计算机资源上訪问而且更新数据.JDBC驱动程序的JTA支持极大地增强了数据訪问能力.  本文的目的是 ...

  4. Java 分布式事务

    0 引言 本文主要介绍java中分布式事务以及对应的解决方案. 1 分布式事务产生的原因 1.1 数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此 ...

  5. java分布式事务,及解决方案

    1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成 ...

  6. java分布式事务及解决方案

    1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成 ...

  7. 分布式事务 spring 两阶段提交 tcc

    请问分布式事务一致性与raft或paxos协议解决的一致性问题是同一回事吗? - 知乎 https://www.zhihu.com/question/275845393 分布式事务11_TCC 两阶段 ...

  8. 分布式事务-Sharding 数据库分库分表

      Sharding (转)大型互联网站解决海量数据的常见策略 - - ITeye技术网站 阿里巴巴Cobar架构设计与实践 - 机械机电 - 道客巴巴 阿里分布式数据库服务原理与实践:沈询_文档下载 ...

  9. Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)

    在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子. 请通过以下方式下载github源代码: git clone https://github.com/d ...

随机推荐

  1. [原创]AD9212采样方法

    随记 最近由于工程原因用到ADC的采样,选用了ADI公司的AD9212芯片,八通道10位ADC.在进行ADC的采样时,看到的想到的几种方法,在这里做个笔记记录一下. AD9212简介 详细说明可以在A ...

  2. AspNetPager分页控件使用方法

    一.下载AspNetPager.dll 二.AspNetPager.dll复制于应用程序下的bin目录,打开解决方案,引用dll文件 三. 在工具栏中添加控件,这样可以支持拖拽使用 四. 要使用Asp ...

  3. jquery验证

    首先要引用js库 <script src="js/jquery-1.7.2.min.js"></script> jquery验证方式 function ch ...

  4. [题解]vijos 运输计划

    Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P 掌管一家 ...

  5. GOOGLE地图坐标拾取方法、GOOGLE地图获取坐标方法

    方法一: 打开google地图-->查找目的地-->右键:此位置居中--> 打开IE浏览器(百度浏览器.GOOGLE浏览器.360浏览器均不行,只能在IE中获取),在IE浏览器的地址 ...

  6. C++常用输出 cout、cerr、clog

    三者在C++中都是标准IO库中提供的输出工具: cout:写到标准输出的ostream对象: cerr:输出到标准错误的ostream对象,常用于程序错误信息: clog:也是输出标准错误流(这点儿和 ...

  7. 使用spring配置quartz定时器

    quartz是石英钟的意思,所以用这个名字来做定时器的框架名称再适合不过.一年前做项目的时候有用过这个框架,当时没有整理,今天刚好新的商城系统也需要定时器.想要达到的效果是:每天的固定时间,比如凌晨3 ...

  8. redis 的消息发布订阅

    redis支持pub/sub功能(可以用于消息服务器),这个功能类似mq,这里做一个简单的介绍 Pub/Sub Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在R ...

  9. Trie / Radix Tree / Suffix Tree

    Trie (字典树) "A", "to", "tea", "ted", "ten", "i ...

  10. css3的背景颜色渐变@线性渐变

    背景颜色渐变之线性渐变 语法形式: firefox浏览器 background:-moz-linear-gradient(position/deg,startColor,endColor); oper ...