国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用Atomikos Transactions Essentials實現(xiàn)多數(shù)據(jù)源JTA分布式事務(wù)

使用Atomikos Transactions Essentials實現(xiàn)多數(shù)據(jù)源JTA分布式事務(wù)

最近做的project中遇到要將數(shù)據(jù)庫中的表分布到兩臺不同的服務(wù)器上的Mysql5.0中,project主要使用spring ibatis。因此需要JTA的支持,但是tomcat不支持,所以就搜索開源的JTA實現(xiàn)。
最開始使用的是JOTM,但是使用中不能自動rollback,無論什么情況都commit。然后看到infoq上一篇文章提到AtomikosTransactions Essentials,Atomikos Transactions Essentials 3.0是Atomikos開發(fā)的核心事務(wù)引擎,支持JDBC 以及JMS 的JTA/XA 事務(wù)。易于部署,輕量級,同時支持JDBC 以及JMS 。
Atomikos Transactions Essentials現(xiàn)在的版本是3.1.7,可以在http://www.atomikos.com/home.html下載,在發(fā)布包里的examples文件夾下面有些例子,非常實用,我在使用中參考里面的例子很容易配置成功。先將發(fā)布包里面dist目錄下的atomikos-util.jar,transactions.jar,transactions-api.jar,transactions-jta.jar copy到項目lib里面,如果使用hibernate則需要將另外兩個hibernate相關(guān)的jar頁copy到項目里面,spring配置文件如下:

 

xml 代碼
 
  1. <!-- 第一個數(shù)據(jù)庫 -->  
  2. <bean id="dataSource" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">  
  3.     <property name="uniqueResourceName">  
  4.         <value>mysql/main</value>  
  5.     </property>  
  6.     <property name="xaDataSourceClassName">  
  7.         <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->  
  8.         <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>  
  9.     </property>  
  10.     <property name="xaDataSourceProperties">  
  11.         <value>URL=${jdbc.url};user=${jdbc.username};password=${jdbc.password}</value>  
  12.     </property>  
  13.     <property name="exclusiveConnectionMode">  
  14.         <value>true</value>  
  15.     </property>  
  16.     <property name="connectionPoolSize">  
  17.         <value>3</value>  
  18.     </property>  
  19.     <property name="validatingQuery">  
  20.         <value>SELECT 1</value>  
  21.     </property>  
  22. </bean>  
  23. <!-- 第二個數(shù)據(jù)庫 -->  
  24. <bean id="dataSourceB" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">  
  25.     <property name="uniqueResourceName">  
  26.         <value>mysql/news</value>  
  27.     </property>  
  28.     <property name="xaDataSourceClassName">  
  29.         <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->  
  30.         <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>  
  31.     </property>  
  32.     <property name="xaDataSourceProperties">  
  33.         <value>URL=${jdbc.url.b};user=${jdbc.username.b};password=${jdbc.password.b}</value>  
  34.     </property>  
  35.     <property name="exclusiveConnectionMode">  
  36.         <value>true</value>  
  37.     </property>  
  38.     <property name="connectionPoolSize">  
  39.         <value>3</value>  
  40.     </property>  
  41.     <property name="validatingQuery">  
  42.         <value>SELECT 1</value>  
  43.     </property>  
  44. </bean>  
  45.   
  46.   
  47. <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" />  
  48.   
  49. <!-- 第一個數(shù)據(jù)庫的sqlMapClient -->  
  50. <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  51.     <property name="configLocation">  
  52.         <!-- 包含第一個數(shù)據(jù)庫表的map -->  
  53.         <value>classpath:/sqlmap-config.xml</value>  
  54.     </property>  
  55.     <property name="dataSource" ref="dataSource" />  
  56.     <property name="lobHandler" ref="lobHandler" />  
  57. </bean>  
  58. <!-- 第二個數(shù)據(jù)庫的sqlMapClient -->  
  59. <bean id="sqlMapClientB" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  60.     <property name="configLocation">  
  61.         <!-- 包含第一個數(shù)據(jù)庫表的map -->  
  62.         <value>classpath:/sqlmap-configb.xml</value>  
  63.     </property>  
  64.     <property name="dataSource" ref="dataSourceB" />  
  65.     <property name="lobHandler" ref="lobHandler" />  
  66. </bean>  
  67.   
  68. <!-- Construct Atomikos UserTransactionManager, needed to configure Spring -->  
  69. <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init"  
  70.     destroy-method="close">  
  71.     <!--  when close is called, should we force transactions to terminate or not? -->  
  72.     <property name="forceShutdown">  
  73.         <value>true</value>  
  74.     </property>  
  75. </bean>  
  76.   
  77. <!-- Also use Atomikos UserTransactionImp, needed to configure Spring  -->  
  78. <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">  
  79.     <property name="transactionTimeout" value="240" />  
  80. </bean>  
  81.   
  82. <!-- Configure the Spring framework to use JTA transactions from Atomikos -->  
  83. <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">  
  84.     <property name="transactionManager">  
  85.         <ref bean="atomikosTransactionManager" />  
  86.     </property>  
  87.     <property name="userTransaction">  
  88.         <ref bean="atomikosUserTransaction" />  
  89.     </property>  
  90. </bean>  



事務(wù)的配置, 使用了spring2.0的語法,所以將namesapce也帖出來了.

xml 代碼
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:aop="http://www.springframework.org/schema/aop"  
  5.        xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  7.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  8.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  
  9.        default-autowire="byName" default-lazy-init="true">  
  10.     <!-- 支持 @AspectJ 標(biāo)記-->  
  11.     <aop:aspectj-autoproxy/>  
  12.   
  13.     <aop:config proxy-target-class="true">  
  14.         <aop:advisor pointcut="execution(* *Facade.*(..))" advice-ref="txAdvice"/>  
  15.         <aop:advisor pointcut="execution(* *Manager.*(..))" advice-ref="txAdvice"/>  
  16.     </aop:config>  
  17.   
  18.     <tx:advice id="txAdvice">  
  19.         <tx:attributes>  
  20.             <tx:method name="get*" read-only="true"/>  
  21.             <tx:method name="find*" read-only="true"/>  
  22.             <tx:method name="has*" read-only="true"/>  
  23.             <tx:method name="locate*" read-only="true"/>  
  24.             <tx:method name="*"/>  
  25.         </tx:attributes>  
  26.     </tx:advice>  
  27. </beans>  


這樣配置以后就可以使用分布式事務(wù),測試中出現(xiàn)異常時事務(wù)也自動提交。和JOTM相比Atomikos Transactions Essentials更加穩(wěn)定,它原來是商業(yè)項目,現(xiàn)在開源了。象mysql一樣賣服務(wù)支持的。而且論壇頁比較活躍,有問題很快可以解決。

使用XADatasource的數(shù)據(jù)源配置

Java代碼
  1. <!-- 第一個數(shù)據(jù)庫 -->   
  2.     <bean id="dataSource" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
  3.         <property name="uniqueResourceName">   
  4.             <value>mysql/main</value>   
  5.         </property>   
  6.         <property name="xaDataSourceClassName">   
  7.             <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->   
  8.             <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
  9.         </property>   
  10.         <property name="xaDataSourceProperties">   
  11.             <value>URL=${jdbc.url};user=${jdbc.username};password=${jdbc.password}</value>   
  12.         </property>   
  13.         <property name="exclusiveConnectionMode">   
  14.             <value>true</value>   
  15.         </property>   
  16.         <property name="connectionPoolSize">   
  17.             <value>3</value>   
  18.         </property>   
  19.         <property name="validatingQuery">   
  20.             <value>SELECT 1</value>   
  21.         </property>   
  22.     </bean>   
  23.     <!-- 第二個數(shù)據(jù)庫 -->   
  24.     <bean id="dataSourceB" class="com.atomikos.jdbc.SimpleDataSourceBean" init-method="init" destroy-method="close">   
  25.         <property name="uniqueResourceName">   
  26.             <value>mysql/news</value>   
  27.         </property>   
  28.         <property name="xaDataSourceClassName">   
  29.             <!-- 使用Mysql XADataSource(mysql>=5.0, Connector/J>=5.0才可以支持XADatasource)-->   
  30.             <value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>   
  31.         </property>   
  32.         <property name="xaDataSourceProperties">   
  33.             <value>URL=${jdbc.url.b};user=${jdbc.username.b};password=${jdbc.password.b}</value>   
  34.         </property>   
  35.         <property name="exclusiveConnectionMode">   
  36.             <value>true</value>   
  37.         </property>   
  38.         <property name="connectionPoolSize">   
  39.             <value>3</value>   
  40.         </property>   
  41.         <property name="validatingQuery">   
  42.             <value>SELECT 1</value>   
  43.         </property>   
  44.     </bean>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring + Atomikos 分布式事務(wù)實現(xiàn)方式
spring+mybatis+atomikos 實現(xiàn)JTA事務(wù)
JTA集成JOTM或Atomikos配置分布式事務(wù)(Tomcat應(yīng)用服務(wù)器)
spring,mybatis,atomikos多數(shù)據(jù)源的整合
分布式事務(wù)JTA之實踐:Spring+ATOMIKOS
在spring、tomcat中使用多數(shù)據(jù)源并支持分布式事務(wù)管理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服