1.现有方案

a.atomikos

b.jotm

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

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

<!-- 分布式事务支持-atomikos-begin -->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-api</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jta</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>atomikos-util</artifactId>
<version>3.9.1</version>
</dependency>
<!-- 分布式事务支持-atomikos-end -->

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

4.spring配制如下:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db.properties"/>
</bean>
<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" lazy-init="true">
<property name="uniqueResourceName" value="dataSource" />
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="url">${db.url}</prop>
<prop key="user">${db.username}</prop>
<prop key="password">${db.password}</prop>
</props>
</property>
<property name="poolSize" value="10"/>
<property name="maxPoolSize" value="100"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean> <bean id="userTransactionService" class="com.atomikos.icatch.config.UserTransactionServiceImp" init-method="init" destroy-method="shutdownForce">
<constructor-arg>
<props>
<prop key="com.atomikos.icatch.service">com.atomikos.icatch.standalone.UserTransactionServiceFactory</prop>
</props>
</constructor-arg>
</bean> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close" depends-on="userTransactionService">
<property name="forceShutdown" value="false" />
</bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" depends-on="userTransactionService">
<property name="transactionTimeout" value="300" />
</bean> <bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" depends-on="userTransactionService">
<property name="transactionManager" ref="atomikosTransactionManager" />
<property name="userTransaction" ref="atomikosUserTransaction" />
</bean> <tx:annotation-driven transaction-manager="jtaTransactionManager" />

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

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

6.特别说明:

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

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

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

最新文章

  1. python-基本数据类型
  2. 创建agsXMPP 自定义packet types
  3. hibernate的Criteria条件查询
  4. R----DT包介绍学习
  5. Installing Mp4box in centos 6
  6. SQL WHILE 循环中的游标 用例,SQL中实现循环操作
  7. (Problem 1)Multiples of 3 and 5
  8. hibernate 管理 Session(单独使用session,不spring)
  9. PCB信号集
  10. Java之反射--练习
  11. #pta循环作业
  12. Linux shell 脚本(一)
  13. 章节四、2-Switch语句
  14. 11.0-uC/OS-III就绪列表(优先级)
  15. NOIP模拟赛-2018.11.5
  16. OpenCV——距离变换与分水岭算法的(图像分割)
  17. MySQL数据库----安装
  18. hdu6446 网络赛 Tree and Permutation(树形dp求任意两点距离之和)题解
  19. 【转】TCP端口号记录
  20. Java对称加密算法

热门文章

  1. [题解]洛谷月赛 Hello World(升级版)
  2. Ajax调用SpringMVC ModelAndView 无返回情况
  3. JavaScript取得Format后的当前时间
  4. NGUI界面动画
  5. JS 获取浏览器和屏幕宽高信息
  6. eclipse中的代码提示功能
  7. JavaScript事件——冒泡、捕获
  8. string&amp;&amp;char 小技巧
  9. 一点一滴学shell
  10. Hibernate缓存之Aop+cache