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

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

2013-11-08 
spring + ibatis 多数据源事务(分布式事务)管理配置方法1、我先要给大家讲一个概念:spring 的多数据源事务,

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数据源的配置及事务的配置及可。以下是我的配置,供参考。

<bean id="jotm" value="500000"/></bean> <bean id="dataSource" destroy-method="shutdown">     <property name="dataSource">             <bean destroy-method="shutdown">                     <property name="transactionManager" ref="jotm"/>                     <property name="driverName" value="${driverClass}"/>                     <property name="url" value="${jdbcUrl}"/>             </bean>     </property>     <property name="user" value="${user}"/>     <property name="password" value="${password}"/></bean><bean id="dataSourceBbs" destroy-method="shutdown">     <property name="dataSource">             <bean destroy-method="shutdown">                     <property name="transactionManager" ref="jotm"/>                     <property name="driverName" value="${bbs.driverClass}"/>                     <property name="url" value="${bbs.jdbcUrl}"/>             </bean>     </property>     <property name="user" value="${bbs.user}"/>     <property name="password" value="${bbs.password}"/></bean> <!-- JTA事务管理器 --><bean id="myJtaManager" ref="jotm" /></bean>  <!-- 事务切面配置 --> <aop:config>         <aop:pointcut id="serviceOperation" expression="execution(* com.bohai.service.impl.*.*(..))"/>         <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"  order="0" /> </aop:config>  <!-- 通知配置 --> <tx:advice id="txAdvice" transaction-manager="myJtaManager">         <tx:attributes>                 <tx:method name="delete*" propagation="REQUIRED"  />                 <tx:method name="save*" propagation="REQUIRED"  />                 <tx:method name="update*" propagation="REQUIRED"  />                 <tx:method name="*" propagation="REQUIRED"  />                 <tx:method name="find*" propagation="SUPPORTS" read-only="true"/><tx:method name="get*" propagation="SUPPORTS" read-only="true"/><tx:method name="fetch*" propagation="SUPPORTS" read-only="true"/><tx:method name="*_noTrans" propagation="NOT_SUPPORTED"/>         </tx:attributes> </tx:advice>  

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

# do not use CAROL JNDI wrapper??????? carol.start.jndi=false??????? ??????? # do not start a name server??????? carol.start.ns=false??????? ??????? # Naming Factory???? carol.jndi.java.naming.factory.url.pkgs=org.apache.naming 

?

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

6、需要jtom的以下jar:


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

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

什么样的场景比较合适使用 多数据源 呢?
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大.. 什么样的场景比较合适使用 多数据源 呢?
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大..
可以把2000个分别放到不同的数据库中,这样减轻了数据库的压力。当在工程中要使用多个数据库时,就要使用多数据源。 3 楼 bo_hai 2012-12-18   http://mengqingyu.iteye.com/blog/571388

这个blog讲更详细。 4 楼 bo_hai 2012-12-18   http://mengqingyu.iteye.com/blog/571388

热点排行