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代碼 <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"> <property name="defaultTimeout" value="500000"/> </bean> <bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" 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" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" 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" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="userTransaction" 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 ,內容是: Java代碼 # 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: 轉載自:http://www.blogjava.net/hao446tian/
spring + ibatis 多數據源事務(分佈式事務)管理配置方法(轉)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.