跳至內容

Java事務API

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

Java 事務 APIJava Transaction API,簡稱JTA)是一个 Java 企業版的應用程式接口,佇咧 Java 環境內底,允准完成迒過濟个 XA 資源的分佈式事務。JTA 是佇咧 Java 社區過程下制定的規範,編號 JSR 九百空七。JTA 提供:

  • 劃分事務邊界
  • X / Open XA API 允准資源參與到事務當中。

X / Open XA 體系結構

佇咧 X / Open XA 的體系結構當中,事務管理器抑是事務處理監控器(TP monitor)協調資源是迒過真濟个資源,如資料庫佮消息隊列的事務。每一个資源攏有家己的管理器。資源管理器通常有家己的頭路用佇咧操縱資源的 API,譬如講關係型資料庫使用的 JDBC。此外,資源適配器允准事務管理器協調該資源管理器佮其他資源管理器之間的分佈式事務。最後咧,佮事務管理器通訊的應用程式開始,提交,抑是回滾事務。應用程式平平需要使用資源家己的 API 佮無仝款的資源通訊,修改資源。

JTA 著 X / Open XA 體系結構的實現

JTA API 包括兩个 Java 貿著的類似:

  • ` javax . transaction `
  • ` javax . transaction . xa `

JTA 是以 X / Open XA 體系結構做基礎設計的,毋過伊定義了兩種無仝款的事務邊界劃分的 API。應用侍服器,如 EJB 侍服器,佮應用組件區別對待。JTA 提供一个接口,` javax . transaction . TransactionManager `,這是供應用侍服器家己來開始,提交或者是回滾事務使用準備,同時閣提供另外一个接口 ` javax . transaction . UserTransaction `,這是供一般客戶代碼,如 Java Servlet 抑是講 EJB 管理事務使用的。

為著通過事務管理器管理,JTA 架構要求每一个資源管理器著愛實現 ` javax . transaction . xa . XAResource ` 承喙,像頭前咧講,每一个資源會有一个家己的特定的 API,比如講:

  • 關係型資料庫使用 JDBC
  • 消息服務使用 JMS
  • 一般的企業信息系統(EIS)的資源使用 J 二 EE 連接器架構。

Java 事務 API

Java 事務 API 由三个部份組成:

  • UserTransaction-高層的應用事務劃分接口,供客戶的程序使用
  • TransactionManager-高層的事務管理器接喙,供應用侍服器使用
  • XAResource,X / Open XA 協議的標準 Java 映射,供事務性資源管理器使用。

UserTransaction 承喙

javax . transaction . UserTransaction 接口予應用程式提供編程控制事務邊界的能力。該接口會當供 Java 客戶捀程序抑是 EJB 使用。

UserTransaction 的 begin 方法開始一个全局事務,該共事務佮調用執行緒關聯。事務到執行緒的管理是由事務管理器完成的,對應用程式透明的。

嘿擎套事務的支持毋是必須的。若調用執行緒的頂下文已經佮事務關聯,並且事務管理器的實現去無支持躉套的事務,UserTransaction 的 begin 方法調用的時陣共拋出來 NotSupportedException。

底層的事務管理器的實現負責提供無仝應用程式間事務上下文的傳播,事務管理器佇客戶捀和侍服器計算機頂頭。 傳播的事務上下文的格式由客戶捀和侍服器計算機協商確定。比如講,若事務管理器是 JTS 規範的實現,將使用 CORBA OTS 一鋪一規範中描述的事務上下文傳播格式。事務上下文的傳播對應用程式來講是透明的。

EJB 侍服器嘿 UserTransaction 支持

, EJB 侍服器需要支持 UserTransaction 承喙,以供 Bean 管理事務的 EJB 使用。通過 EJBContext 的 getUserTransaction 方法,EJB 構件會當提著 UserTransaction 承喙。按呢乎,EJB 應用程式無需要佮事務管理器直接交互,就會當劃分事務邊界。取代之的是 EJB 依賴佇咧 EJB 侍服器提供 EJB 規範當中定義的所有事務處理。(EJB 侍服器佮事務管理器之間的交互對應用是通光。實現事務管理的責任是佇 EJB 容器佮服務的提供商。)

下跤的例說明矣 Bean 管理事務的會話 Bean 按怎使用 UserTransaction:

對 JNDI 得著 UserTransaction

若環境安裝 JTA 的實現,應該會使對 ` java : comp / UserTransaction ` 得著 UserTransaction。

Java 標準版嘿 UserTransaction 支持

愛使用 JTA 抑是 UserTransaction 提供的功能,應用侍服器並毋是必須的。現存在獨立的 JTA 實現,按呢乎,咧普通的 Java 應用程式中間攏會當利用 JTA / XA 紮來的可靠性。特別是咧和類似 Spring 家私做伙使用的時陣,這為開發可靠的 Java 應用程式提供無仝的範式。

開源的 JTA 實現

到二空一空四月為止,JTA 的開源實現有:

  • Bittronix Transaction Manager
  • Atomikos Transactions Essentials
  • JBossTM(較早有叫做 Arjuna)

以上所有的事務管理器會當佇 J 二 SE 環境內底使用。

參見

  • Java 事務服務

參考文獻

外部連結

  • JTA specifications
  • JSR 九百空七
  • Atomikos open source JTA implementation-for JTA in J 二 SE