全局和本地事务(从理论上)
全局和本地事務
·???全局事務 - 資源管理器管理和協調的事務,可以跨越多個數據庫和進程。資源管理器一般使用?XA二階段提交協議與“企業信息系統”(EIS)?或數據庫進行交互。
·???本地事務 - 在單個?EIS?或數據庫的本地并且限制在單個進程內的事務。本地事務不涉及多個數據來源。
本地和全局事務都使用?javax.transaction.UserTransaction?接口劃分界限,客戶端必須使用此接口。本地事務不使用事務管理器,因而處理速度更快。
起初,所有事務都是本地的。如果非?XA?數據源連接是事務范圍中登記的第一個資源連接,當“另一個”XA?數據源連接加入此連接時,該非?XA?數據源連接就成為全局事務。如果另一個非?XA?數據源連接試圖加入,就會產生異常。
J2EE開發者有兩個事務管理的選擇:?全局?或?本地?事務。全局事務由應用服務器管理,使用JTA。局部事務是和資源相關的,比如一個和JDBC連接關聯的事務。這個選擇有深刻的含義。例如,全局事務可以用于多個事務性的資源(典型例子是關系數據庫和消息隊列)。使用局部事務,應用服務器不需要參與事務管理,并且不能幫助確??缭蕉鄠€資源(需要指出的是多數應用使用單一事務性的資源)的事務的正確性。
全局事務.??全局事務有一個重大的缺陷,代碼需要使用JTA:一個笨重的API(部分是因為它的異常模型)。此外,JTA的UserTransaction通常需要從JNDI獲得,這意味著我們為了JTA,需要?同時?使用JNDI和?JTA。顯然全部使用全局事務限制了應用代碼的重用性,因為JTA通常只在應用服務器的環境中才能使用。?以前,使用全局事務的首選方式是通過EJB的?CMT(容器管理事務):CMT是?聲明式事務管理?的一種形式(區別于?編程式事務管理)。EJB的CMT不需要任何和事務相關的JNDI查找,雖然使用EJB本身肯定需要使用JNDI。它消除了大多數(不是全部)硬編碼的方式去控制事務。重大的缺陷是CMT綁定在JTA和應用服務器環境上,并且只有我們選擇使用EJB實現業務邏輯,或者至少處于一個事務化EJB的外觀(Facade)后才能使用它。EJB有如此多的詬病,尤其是存在其它聲明式事務管理時,EJB不是一個吸引人的建議。
本地事務.?本地事務容易使用,但也有明顯的缺點:它們不能用于多個事務性資源。例如,使用JDBC連接事務管理的代碼不能用于全局的JTA事務中。另一個缺點是局部事務趨向于入侵式的編程模型。
總結
以上是生活随笔為你收集整理的全局和本地事务(从理论上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 200汽车车架号查询出来与汽车不符是什么
- 下一篇: 什么是缓冲库存贷款