首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 理論與實踐:透徹理解 JTS 架構與透明事務機制

     編輯:Java 相關知識

什麼是 JTS?

JTS(Java Transaction Service)是 組件事務監視器(Component Transaction Monitor, CTM),也是 對象事務監視器(OTM)。它將傳統程序化 TP Monitor(如 CICS)擴展到分布式對象世界:事務邊界由業務對象的方法調用定義,而非底層資源操作序列。JTS 實現了 CORBA OTS 規範,並作為 JTA(Java Transaction API)與 OTS 之間的橋樑,保證 J2EE 與 CORBA 互操作。

核心魔法:三重透明化

1. 透明資源徵用

應用狀態最終存儲在事務性資源管理器(DB、MQ、ERP)中。J2EE 容器只認可三類資源:JDBC DataSource、JMS ConnectionFactory、JCA Resource Adapter。容器通過 包裝器模式 攔截 getConnection(),在返回給應用前將連接包裝,攔截 JDBC 操作時自動向事務管理器登記(Enlist)當前線程關聯的事務。開發者完全感知不到徵用過程。

2. 透明事務控制(宣告式事務)

CMT 通過部署描述符 container-transaction 的 trans-attribute 定義六種模式:Required、RequiresNew、Mandatory、Supports、NotSupported、Never。容器根據方法屬性與調用上下文自動決定:加入現有事務、開啟新事務、掛起現有事務、無事務運行、或拋出異常。業務代碼零事務代碼,裝配期可調整語義。

3. 透明事務傳播

事務上下文綁定在執行線程上。本地方法調用同線程自然傳播;遠程 EJB 調用時,Stub 將事務標識(Xid)作為 IIOP 隱含上下文傳遞,Skeleton 在遠端線程綁定事務上下文後再執行實際方法。Servlet/JSP 也可發起事務,上下文可透明跨越 Web 容器 → EJB 容器 → 多台資料庫服務器。

容器優化:單資源自動降級為單階段提交

JTS 能檢測事務中是否只徵用單一資源管理器實例。若是,自動跳過昂貴的兩階段提交(2PC),直接委託資源管理器單階段提交,顯著提升效能。

架構啟示

這套「透明三部曲」不是 JTS 單獨完成的,而是 J2EE 容器協同 EJB Stub/Skeleton、JDBC 驅動包裝器、JMS/JCA 提供者、事務管理器共同編織的基礎設施。應用開發者專注業務邏輯,基礎設施承擔分布式事務的所有複雜度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved