JTA/JTS
Java Transaction API
Java事務API(Java Transaction API,簡稱JTA ) 是一個Java企業版 的應用程序接口,在Java環境中,允許完成跨越多個XA資源的分布式事務。
JTA和它的同胞Java事務服務(JTS;Java TransactionService),為J2EE平臺提供了分布式事務服務。
不過JTA只是提供了一個接口,并沒有提供具體的實現,而是由j2ee服務器提供商 根據JTS規范提供的,常見的JTA實現有以下幾種:
1.J2EE容器所提供的JTA實現(JBoss)
2.獨立的JTA實現:如JOTM,Atomikos.這些實現可以應用在那些不使用J2EE應用服務器的環境里用以提供分布事事務保證。如Tomcat,Jetty以及普通的java應用。
標準的分布式事務
一個分布式事務(Distributed Transaction)包括一個事務管理器(transaction manager)和一個或多個資源管理器(resource manager)。
資源管理器(resource manager)是任意類型的持久化數據存儲。
事務管理器(transaction manager)承擔著所有事務參與單元者的相互通訊的責任。
JTA的優缺點
JTA的優點很明顯,就是提供了分布式事務的解決方案,嚴格的ACID。但是,標準的JTA方式的事務管理在日常開發中并不常用,
因為他有很多缺點:
實現復雜
通常情況下,JTA UserTransaction需要從JNDI獲取。這意味著,如果我們使用JTA,就需要同時使用JTA和JNDI。
JTA本身就是個笨重的API
通常JTA只能在應用服務器環境下使用,因此使用JTA會限制代碼的復用性。
總結
Java事務的類型有三種:JDBC事務、JTA(Java Transaction API)事務、容器事務,其中JDBC的事務操作用法比較簡單,適合于處理同一個數據源的操作。
JTA事務相對復雜,可以用于處理跨多個數據庫的事務,是分布式事務的一種解決方案。
這里還要簡單說一下,雖然JTA事務是Java提供的可用于分布式事務的一套API,但是不同的J2EE平臺的實現都不一樣,并且都不是很方便使用,
所以,一般在項目中不太使用這種較為負責的API。現在業內比較常用的分布式事務解決方案主要有異步消息確保型、TCC、最大努力通知等。
http://www.hollischuang.com/archives/1658
https://www.ibm.com/developerworks/cn/java/j-lo-jta/index.html
http://www.lxweimin.com/p/e063858d94f2