「Web 服務基本交易」概觀

應用程式伺服器中的「Web 服務基本交易 (WS-AT)」支援提供了 Web 服務環境的交易服務品質。 分散式 Web 服務應用程式及其所用資源可以參與分散式廣域交易。 現在,在 Liberty 中也支援 WS-AT。

Web 服務通訊協定提供若干用來定義 Web 服務應用程式的標準方法,應用程式可以利用它,獨立於所用的產品、平台或程式設計語言來運作。 WS-AT 支援是下列規格在應用程式伺服器中的實作。 這些規格定義了一組 Web 服務,可讓 Web 服務應用程式參與散佈於異質 Web 服務環境各處的廣域交易。

WS-AT 支援是一個交互作業功能通訊協定,並未引進任何用於交易式支援的新程式設計介面。 當標準企業應用程式使用「Java™ 交易 API (JTA)」UserTransaction 介面時,會提供廣域交易區分。 如果在廣域交易之下執行的應用程式元件發出 Web 服務要求,WS-AT CoordinationContext 會隱含地傳播至目標 Web 服務,但前提是已依照配置交易式部署屬性所說明,設定了適當的應用程式部署描述子。

如果應用程式伺服器是包含 WS-AT CoordinationContext 之 Web 服務要求的目標端點所在的系統,在已成為目標 Web 服務應用程式執行所在交易式環境定義的目標執行時期環境中,應用程式伺服器會自動建立一項子層 JTA 交易。

下圖顯示在兩部用於 Web 服務要求(其中含有 WS-AT CoordinationContext)的應用程式伺服器之間共用的交易環境定義。

圖 1. 在兩個應用程式伺服器之間共用交易環境定義
基本交易包含在應用程式伺服器 1 上的 Web 服務用戶端及其 XA 資源,以及在應用程式伺服器 2 上的 Web 服務應用程式及其 XA 資源。

依預設,如果您啟用 WS-AT 特性,且在 Liberty 中的用戶端起始交易,用戶端交易所包含的所有 Web 服務作業都會新增到廣域交易中。 不過,如果您會在現行廣域交易範圍之外執行任何程式碼,請搭配 UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTION 類型來使用 UOWManager。 這會產生環繞著這個程式碼 Snippet 來暫停再回復廣域交易的效果。

表 1. 您能或不能將 Liberty 中的 WS-AT 廣域交易用於用戶端出埠的條件
是否啟用 WS-AT 特性 交易是否存在 原則主張在 WSDL 中是否存在 是否啟用 WS-AT 廣域交易
否,Liberty 會擲出異常狀況
否,Liberty 會擲出異常狀況
是 (wsp: Optional="false") 否,Liberty 會擲出異常狀況
是 (wsp: Optional="true")
表 2. 您能或不能將 Liberty 中的 WS-AT 廣域交易用於伺服器入埠的條件
是否啟用 WS-AT 特性 協調環境定義在 SOAP 標頭中是否存在 原則主張在 WSDL 中是否存在 是否啟用 WS-AT 廣域交易
否,Liberty 會擲出異常狀況
否,Liberty 會擲出異常狀況
是 (wsp: Optional="false") 否,Liberty 會擲出異常狀況
是 (wsp: Optional="true")

應用程式設計

WS-AT 是一種兩段式確定的交易通訊協定,只適用於持續期間較短的交易。

WS-AT 最適用於將交易環境定義分佈在部署於單一企業的 Web 服務之間。 只有要求-回應訊息交換型樣會採用交易環境定義,因為在要求完成交易之前,交易的發送端(應用程式或儲存器)必須確定在這項交易下執行的所有商業作業都已完成。 單向要求所呼叫的 Web 服務要求,永遠不會在發出要求之用戶端的交易之下執行。

服務錯誤對 WS-AT 交易的影響,類似於 Enterprise JavaBeans (EJB) 應用程式異常狀況對交易的影響(如 EJB 規格所述)。 如果在要求端 WS-AT 交易下執行的服務傳回錯誤,應用程式伺服器不會將交易自動標示為「僅限回復」。 要求端的異常狀況處理程式會選擇交易是否可以進行,並選擇是否要將交易標示為「僅限回復」。 如果要求端是在應用程式伺服器中執行,可以利用標準 JTA 或 EJB API 將交易標示為「僅限回復」。 產生錯誤的服務元件本身可能在傳回錯誤之前,就將交易標示為「僅限回復」。 如果服務元件的實作發生系統異常狀況,它通常會讓儲存器來處理異常狀況。 應用程式伺服器儲存器在處理服務實作所產生的系統異常狀況時,會自動將任何收到的交易環境定義標示為「僅限回復」。


指示主題類型的圖示 概念主題

檔名:cwlp_dep_wsatoverview_lib.html