在 COM 術語中,交易總是一個具備原子性、一致性、隔離性及持久性的工作單位(ACID)。 在大型主機術語中,交易可能是也可能不是 ACID 交易;在大型主機術語中,交易是交易程式(TP)中的一組操作或指令。 這種術語差異可能會讓人感到困惑。 在 TI Manager 和 TI Designer 中使用的「transaction」一詞,總是指 ACID 交易。
兩階段提交(2PC)是一種協定,允許一組應用程式(或跨應用程式)操作或指令全部回滾,或作為單一交易單元提交。
備註
若透過 TCP/IP 協定呼叫 TI 自動化伺服器,則不支援兩階段提交交易。 兩階段提交僅能在 SNA APPC/LU 6.2 協定上運作。
TI 元件有四種可能的交易性質:
需要進行交易
需要新交易
支援交易
不支援交易
前兩種選擇要求大型主機 TP 必須是交易式(即符合 ACID 屬性)且支援同步層級 2。 如果大型主機TP是CICS連結或IMS版本6.0或更新程式,這對其是透明的。 第三種選擇要求大型主機 TP 支援同步等級 2 請求,並適當處理交易語意。 第四種選擇適用於 IMS 6.0 版本之前的 IMS TP,以及任何僅支援 Sync Level 0 或 Sync Level 1 的 CICS TP。
若在 COM+ 交易範圍內呼叫 TI 元件,TI 將與 CICS 建立同步等級 2 對話(否則使用同步等級 0)。 這對 TI 元件的用戶端是透明的。 若大型主機 TP 是 CICS Link 程式,則通訊的事務性質對 TP 也是透明的,因為 IBM 在 CICS 中的鏡像交易(CSMI)處理同步層級 2 協定,而其所連結的 TP 不知道使用的是同步層級 0 還是同步層級 2。
TI 會依照 COM+ 程式設計模型,當它完成用戶端每個方法呼叫的操作時,呼叫 SetComplete 或 SetAbort。 若未偵測到錯誤,TI 會呼叫 SetComplete;否則它會呼叫 SetAbort。 若大型主機 TP 在回傳的元資料錯誤區塊中設定 DisableCommit 標誌,表示交易不應提交,TI 也會呼叫 SetAbort。 TI Automation 客戶端應用程式若判斷存在應用層級問題,應禁止交易提交,也可選擇呼叫 SetAbort。
當用戶端的方法呼叫回傳時,主機上的 TP 已完成某個工作單元,但 CICS 中受保護資源的任何變更尚未被提交。 TI 使用新的 DTC 介面來在 DTC 交易中啟動同步等級 2 的對話。 當 DTC 準備提交或中止交易時,會與 TI 通訊,以驅動 LU 6.2 對話中的適當兩階段提交流程。 同樣地,所有雙電腦工作都是由 TI 代表客戶透明執行。
雖然 TI 物件可在方法完成時停用,但對話必須持續到交易提交或中止。 若使用者的應用程式代碼呼叫一個或多個交易方法但長時間未提交該交易,可能會對效能造成負面影響並佔用系統資源。 對話很容易被結構不良的使用者程式碼佔據。
當對話等待提交時,它將解除與所關聯對象的關聯。 TI 管理這些「等待中的會話池」,並在收到 DTC 的適當通知時執行所需的同步級別的操作。 在可能的情況下,TI 會重用這些對話以減少開銷。
TI 也提供重新同步服務(SNA LU 6.2 Resync TP)。 此 Windows 服務被設定為 SNA 定義的 Resync TP(0x06f2)的自動啟動可調用服務。 Resync 服務實作了 SNA 交易管理器的「Exchange Log Names」與「Compare States」功能。 它允許 DTC(分散式交易協調器)與 CICS 在系統啟動或系統或通訊失敗後,依需求啟動復原程序。
欲了解 IBM 的 SNA SyncPoint 或 2PC 流程,請參閱 SNA SyncPoint 服務架構參考(IBM SC31-8134-00)。 所有 TI 2PC 流程皆依此架構實作。
備註
關於如何使用使用明確 SYNCPOINT 指令的 CICS Link TP,請參見帶有明確 SYNCPOINT 指令的 TP。
總結來說,要使用兩階段提交,必須符合以下所有條件:
本地與遠端 LU 必須在主機整合伺服器節點中啟用 SyncPoint 支援。
本地與遠端的 LU 都應該指向正在執行 Resync 服務的電腦。
遠端環境(RE)必須啟用同步等級 2 支援。 要檢查這個,請在 TI Manager 裡右鍵點擊 RE,點選屬性,然後點選 LU 6.2 分頁。
TI 元件必須將交易支援設定為支援、必要或要求新交易。 要檢查這個設定,請在 TI Manager 中右鍵點擊 TI 元件,點選屬性,然後點選交易分頁。
遠端主機必須設定為支援同步等級 2。