應用程式伺服器中的 Web 服務商業活動支援
利用應用程式伺服器中的「Web 服務商業活動 (WS-BA)」支援,不同系統上的 Web 服務可以協調比基本交易更加鬆散聯結的活動。這類活動在基本結構上可能很難或無法回復,因此如果發生錯誤,則需要補償程序。
- WS-BA 是定義商業活動之通訊協定的特定協調類型。這些規格如下:
- 「Web 服務協調 (WS-COOR)」會指定 CoordinationContext 和 Registration 服務,可供參與者 Web 服務用來參與特定協調類型所提供的通訊協定。 這些規格如下:
- Web 服務協調 1.0 版
- Web 服務協調 1.1 版
- Web 服務協調 1.2 版
除了支援 WS-BA 交互作業能力通訊協定之外,應用程式伺服器還提供用來建立商業活動和補償處理程式的程式設計介面。利用這個程式設計介面,您可以指定補償資料,並檢查或變更商業活動的狀態。
這項補償機能也可用於不是 Web 服務的應用程式,前提是這些應用程式僅涉及 WebSphere® Application Server 之間的通訊。如需相關資訊,請參閱相關主題。
您可以配置 WS-BusinessActivity 通訊協定的原則。 您可以配置用戶端是否要傳播 WS-BA 環境定義,以及伺服器是否要接收 WS-BA 環境定義。為了確保用戶端在發出出埠服務要求時,一律傳送 WS-BusinessActivity 環境定義,您必須建立某個原則集與用戶端的關聯性,其中該原則集必須包括 WS-Transaction 原則類型,且這個原則類型的 WS-BusinessActivity 設定必須是 Mandatory。另外,如果您知道用戶端一律會呼叫包括 WS-BusinessActivity BAAtomicOutcomeAssertion 原則類型屬性的遠端端點,您也可以配置用戶端來套用提供者的 WS-Policy 配置,使得用戶端會自動採用提供者的必要原則。
為了確保 Web 服務提供者收到的任何要求包括 WS-BusinessActivity 環境定義,您必須建立某個原則集與提供者的關聯性,其中該原則集必須包括 WS-Transaction 原則類型,且這個原則類型的 WS-BusinessActivity 設定必須是 Mandatory。
為了確保用戶端或提供者永不使用 WS-BusinessActivity 環境定義,您必須建立某個原則集與用戶端或提供者的關聯性,其中該原則集包括 WS-Transaction 原則類型,且這個原則類型的 WS-BusinessActivity 設定必須是 Never。 針對不要 Web 服務要求在用戶端和提供者之間建立緊密聯結(例如,當企業之間有要求時)的環境,您可以使用這個配置。
如果沒有原則集與用戶端或提供者相關聯,或是 WS-Transaction 原則類型未包含在原則集中,則會使用預設 WS-Transaction 行為。
應用程式開發
Web 服務應用程式運用 WS-BA 時,不需要特定的開發作業。
對於 JAX-RPC 應用程式,配置為在 BusinessActivity 範圍下執行的任何 Enterprise JavaBeans (EJB) 元件,在提出出埠 JAX-RPC Web 服務要求時會自動傳播該範圍。 JAX-RPC 執行時期支援 WS-BA 1.0。
針對 JAX-WS 應用程式,請建立原則集、新增 WS-Transaction 原則類型至原則集、選擇性地配置原則類型,以及將原則集連接到會參與 WS-BA 通訊的應用程式或用戶端,來啟用 WS-BA 支援。JAX-WS 執行時期支援 WS-BA 的 WS-BA 1.0、WS-BA 1.1、WS-BA 1.2 和 WS-Policy 主張。
當 JAX-WS 執行時期接收入埠要求時,支援 WS-Transaction 1.0、WS-Transaction 1.1 和 WS-Transaction 1.2 規格層次。當傳送出埠 JAX-WS 要求時,只能使用一個規格層次。 如果可從目標 Web 服務的「Web 服務說明語言 (WSDL)」或是從用戶端的 WS-Transaction 原則類型使用 WS-Transaction WS-Policy 主張,則會使用適用於用戶端和目標 Web 服務的規格層次。比方說,如果目標 Web 服務的控管環境僅支援 WS-Transaction 1.0,則會使用 WS-BA 1.0。如果兩種規格層次皆適用,或是沒有可用的 WS-Transaction WS-Policy 主張,則會使用「交易服務」設定中設定的預設 WS-Transaction 規格層次。
- 如果用戶端不考量提供者的原則,用戶端不會傳送任何「Web 服務基本交易 (WS-AT)」或 WS-BA 環境定義。這個行為相等於 WS-Transaction 原則配置設定為 Never。
- 如果用戶端會考量提供者的原則,且提供者的原則包括 WS-AT 或 WS-BA 主張,則用戶端會傳送 WS-AT 或 WS-BA 環境定義。這個行為相等於 WS-Transaction 原則配置設定為 Supports。
- 伺服器不會接收任何 WS-AT 或 WS-BA 環境定義。這個行為相等於 WS-Transaction 原則配置設定為 Never。
WS 交易原則主張
如果您對提供者配置 WS-BusinessActivity 通訊協定的原則,這會影響針對與原則類型相關聯的 Web 服務所產生之任何 WSDL 內含的主張。用來說明使用 WS-BusinessActivity 之用戶端或提供者的補償需求的 WS-Policy 主張為 BAAtomicOutcomeAssertion。如果 WS-Transaction 原則類型的 WS-BusinessActivity 設定為 Mandatory 或 Supports,則 WSDL 中會包含一個原則主張。
應用程式伺服器也可以剖析、瞭解及套用其剖析之 WSDL 中的這類主張。
下例顯示一個 WSDL,其中 WS-BusinessActivity BAAtomicOutcomeAssertion 表示端點必須以要求訊息內含的 WS-BA 環境定義來呼叫,且環境定義可以是 WS-Transaction 1.0 或 1.1 格式。有兩個名稱空間和兩個主張;各用於一個 WS-Transaction 規格層次,其會使用 WS-Policy ExactlyOne 運算子來顯示用戶端必須選擇要使用的規格層次。
<wsdl:definitions targetNamespace="bank.example.com"
xmlns:tns="bank.example.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsat11="http://docs.oasis-open.org/ws-tx/wsba/2006/06"
xmlns:wsat10="http://schemas.xmlsoap.org/ws/2004/10/wsba"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:Policy wsu:Id="BAPolicy">
<wsp:ExactlyOne>
<wsat11:BAAtomicOutcomeAssertion />
<wsat10:BAAtomicOutcomeAssertion />
<!-- 省略的主張 -->
</wsp:ExactlyOne />
</wsp:Policy>
<!-- 省略的元素 -->
<wsdl:binding name="BankBinding" type="tns:BankPortType">
<!-- 省略的元素 -->
<wsdl:operation name="TransferFunds">
<wsp:PolicyReference URI="#BAPolicy" wsdl:required="true"/>
<!-- 省略的元素 -->
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>