最近做的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配置文件如下:
事務(wù)的配置, 使用了spring2.0的語法,所以將namesapce也帖出來了.
這樣配置以后就可以使用分布式事務(wù),測試中出現(xiàn)異常時事務(wù)也自動提交。和JOTM相比Atomikos Transactions Essentials更加穩(wěn)定,它原來是商業(yè)項目,現(xiàn)在開源了。象mysql一樣賣服務(wù)支持的。而且論壇頁比較活躍,有問題很快可以解決。
使用XADatasource的數(shù)據(jù)源配置