JTA事務管理


何為分布式事務

 

 

 

一個事務包含多個操作,多個操作操作了多個數據源,這樣的事務稱為分布式事務

和普通事務的區別

 

 

單一數據源,事務管理可以借助數據源本地事務完成,實現簡單

 

分布式事務之困難:不可簡單的借助數據源本地事務完成

 

為什么:

 

 

但是這樣的事務有保障嗎?

1、提交時,db1提交成功,db2網絡不通

2、提交時con1提交完成,此時應用重啟了或者應用及其斷電了

 

分布式事務管理需要什么?

分布式事務管理需要:

1協調各數據源提交、回滾、以及應對通信異常的管理機制

2數據源需要支持這種機制

3應對應用恢復的機制

 

從上面可以得出,做分布式事務管理需要的參與者

 

 

 

 如果是這樣,那么

1 事務管理器協調數據源,兩者之間需要通信,並需要一套協議規范

2為應對網絡,主機故障等,事務管理器,數據源需要記錄相關的事務日志

 

 

何為XA規范

X/Open(The open group)提出的分布式事務處理規范,分布式事務處理的工業標准

 

XA-DTP

X/Open Distributed Transaction Processing(DTP)model分布式事務處理模型

 

 

 

XA-流程

 

 

 

 

 

XA-兩階段提交

 

 

 

JTA是什么?

JTA: Java Transaction Api

Java 根據XA規范提出的事務處理規范

目的:同意API,簡化程序員的學習,簡化編程

 

 

 

JTA-API-構成

 

面向TMRM提供商的API:

 

 

面向編程者的API

 

 

UserTransaction

 

Jta-tm實現提供商

JavaEE應用服務器內建JTA事務管理(TM),提供商:

Weblogic,websphere

 

開源、獨立的JTA事務管理器(TM)組件:

Java Open Transaction Manager(JOTM)

JBoss TS

Bitronix Transaction Manager(BTM)

Atomikos

Narayana

 

 

Jta-rm實現提供商

 

 

在連接池組件中一般也會提供包裝實現:

 

 

 

 

Spring中應用JTA

Spring 自身並未提供jta TM實現,但提供了很好的集成

根據TM的提供者不通,分為兩種應用方式

方式一:使用JavaEE服務器內建的TM,用法做如下配置即可

 

 

 

 

說明:JtaTransactionManager通過JNDI找到服務器提供的java:comp/UserTransaction,
java:comp/TransactionManager

應用使用的數據源需是支持xa的數據源

方式二:在沒有實現TM的應用服務器上(Tomcat,jetty),將獨立的TM組件集成到

我們的應用中

一:使用輕量級服務器+集成TM組件

 

 

 

 

二:使用輕量級服務器+集成TM組件

1、引入TM組件的jar(以Atomikos為例)

2、配置數據源,一定要是XA數據源

3、配置事務管理器TM
TransactionManager的實現bean
UserTransaction的實現bean
springJtaTransactionManager(注入TMUserTransaction
准備兩個數據源

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM