首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring + ibatis 多数据源事宜(分布式事务)管理配置方法

2012-12-30 
spring + ibatis 多数据源事务(分布式事务)管理配置方法spring + ibatis 多数据源事务(分布式事务)管理配

spring + ibatis 多数据源事务(分布式事务)管理配置方法

spring + ibatis 多数据源事务(分布式事务)管理配置方法

1、我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法。官方的说法是:spring 的分布式事务。明白了这个概念,问题就好解决了。

2、分布式事务的应用场景:工程中使用两个及以上数据库中,就要考虑使用分布式事务管理,否则事务不能回滚。

3、现有两种开源的第三方jar支持spring的分布式事务管理,它们分别是:jotm和Atomikos。通过google可以找到下载的链接,其中atomikos的下载需要先填写email信息,再登录email找到链接去下载。下载地址分别:

1、http://jotm.objectweb.org/

2、http://www.atomikos.com/Main/InstallingTransactionsEssentials

我使用的是jotm。

4、基于spring+ibatis的环境下配置jotm的方法很简单。只城要修改spring数据源的配置及事务的配置及可。以下是我的配置,供参考。

Xml代码??spring + ibatis 多数据源事宜(分布式事务)管理配置方法
  1. ??????
  2. <bean?id="jotm"?class="org.springframework.transaction.jta.JotmFactoryBean">??
  3. ?????<property?name="defaultTimeout"?value="500000"/>??
  4. </bean>???
  5. ??
  6. <bean?id="dataSource"?class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"?destroy-method="shutdown">??
  7. ?????<property?name="dataSource">??
  8. ?????????????<bean?class="org.enhydra.jdbc.standard.StandardXADataSource"?destroy-method="shutdown">??
  9. ?????????????????????<property?name="transactionManager"?ref="jotm"/>??
  10. ?????????????????????<property?name="driverName"?value="${driverClass}"/>??
  11. ?????????????????????<property?name="url"?value="${jdbcUrl}"/>??
  12. ?????????????</bean>??
  13. ?????</property>??
  14. ?????<property?name="user"?value="${user}"/>??
  15. ?????<property?name="password"?value="${password}"/>??
  16. </bean>??
  17. ??
  18. <bean?id="dataSourceBbs"?class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"?destroy-method="shutdown">??
  19. ?????<property?name="dataSource">??
  20. ?????????????<bean?class="org.enhydra.jdbc.standard.StandardXADataSource"?destroy-method="shutdown">??
  21. ?????????????????????<property?name="transactionManager"?ref="jotm"/>??
  22. ?????????????????????<property?name="driverName"?value="${bbs.driverClass}"/>??
  23. ?????????????????????<property?name="url"?value="${bbs.jdbcUrl}"/>??
  24. ?????????????</bean>??
  25. ?????</property>??
  26. ?????<property?name="user"?value="${bbs.user}"/>??
  27. ?????<property?name="password"?value="${bbs.password}"/>??
  28. </bean>?????
  29. ??
  30. <!--?JTA事务管理器?-->??
  31. <bean?id="myJtaManager"?class="org.springframework.transaction.jta.JtaTransactionManager">??
  32. ????????<property?name="userTransaction"?ref="jotm"?/>??
  33. </bean>???
  34. ??
  35. ?<!--?事务切面配置?-->??
  36. ?<aop:config>??
  37. ?????????<aop:pointcut?id="serviceOperation"?expression="execution(*?com.bohai.service.impl.*.*(..))"/>??
  38. ?????????<aop:advisor?pointcut-ref="serviceOperation"?advice-ref="txAdvice"??order="0"?/>??
  39. ?</aop:config>??
  40. ???
  41. ?<!--?通知配置?-->??
  42. ?<tx:advice?id="txAdvice"?transaction-manager="myJtaManager">??
  43. ?????????<tx:attributes>??
  44. ?????????????????<tx:method?name="delete*"?propagation="REQUIRED"??/>??
  45. ?????????????????<tx:method?name="save*"?propagation="REQUIRED"??/>??
  46. ?????????????????<tx:method?name="update*"?propagation="REQUIRED"??/>??
  47. ?????????????????<tx:method?name="*"?propagation="REQUIRED"??/>??
  48. ?????????????????<tx:method?name="find*"?propagation="SUPPORTS"?read-only="true"/>??
  49. ????<tx:method?name="get*"?propagation="SUPPORTS"?read-only="true"/>??
  50. ????<tx:method?name="fetch*"?propagation="SUPPORTS"?read-only="true"/>??
  51. ????<tx:method?name="*_noTrans"?propagation="NOT_SUPPORTED"/>??
  52. ?????????</tx:attributes>??
  53. ?</tx:advice>????

?5、jtom 还需要一个配置文件 carol.properties ,内容是:

Java代码??spring + ibatis 多数据源事宜(分布式事务)管理配置方法
  1. #JNDI调用协议??
  2. carol.protocols=jrmp??
  3. #不使用CAROL?JNDI封装器??????????
  4. carol.start.jndi=false??
  5. #不启动命名服务器??
  6. carol.start.ns=false???

?

文件放在classpath下面,也就是src下面。

6、需要jtom的以下jar:


spring + ibatis 多数据源事宜(分布式事务)管理配置方法

7、经过测试,配置是成功的。事务可以回滚。

热点排行