在WSRR 6.2 中使用治理策略框架進行WS-I 校驗

CloudSpace發表於2009-04-15

1. 引言

IBM® WebSphere® Service Registry and Repository(以下簡稱為 WSRR)是 IBM 推出的重要的 SOA 企業級產品,它通過對 SOA 應用中服務的治理和維護,提供 SOA 應用在更多方面和更大範圍的靈活性和可控性,從而提升業務價值。

使用者可以使用 WSRR 的方面很多:使用者可以儲存整個 SOA 應用生命週期中可能用到的服務後設資料到 WSRR 中,以便於實現設計和開發階段的服務後設資料複用,執行時的服務動態呼叫,部署後服務例項後設資料的動態維護等;WSRR提供了基於 Web 頁面的友好使用者介面,使用者可以方便的使用UI來完成各種操作;WSRR 還提供了多種擴充套件點和 API,便於應用開發人員定製、開發適合於本商業應用的軟體從而便捷引用 WSRR 提供的各項功能。

WSRR V6.2是 IBM 最新發布的 WSRR 正式版本。與舊版本相比,WSRR V6.2在策略(Policy)層面給予了更多的關注,提供了多維的策略支援,主要包括:

  • Web服務策略(WS-Policy)的全方位支援。WSRR V6.2 不僅支援基於 WS-Policy 框架規範描述的策略以及附件文件的上載和解析,而且支援面向多個 WS-Policy 領域(如安全、可靠性傳輸、事務等)的策略文件的建立、修改、釋出以及治理策略的執行;
  • 更多的治理策略。在 V6.2 之前,WSRR 就提供了文件校驗框架和治理策略框架,允許使用者在釋出到 WSRR 的文件的整個生命週期中嵌入自定義的治理策略。WSRR V6.2 相容了包括 WS-I 在內的基於工業界標準的文件校驗能力,能夠基於釋出到 WSRR 的文件內容進行校驗和生命週期治理。

本文將在介紹 WSRR V6.2 中治理策略框架的基礎上,闡述 WS-I 互操作性校驗的基本理念和使用方法。

2. WSRR 的治理策略框架

為了提高 WSRR 產品的擴充套件性,增強其對所管理的文件的治理能力,WSRR 提供了多個可插入點(Plug-in),允許使用者或是使用 WSRR 做應用開發的人員定製、裝載特定於企業應用的檢驗器或者策略。主要的插入點如下表所示:


表 2-1 WSRR V6.2 中的主要插入點

插入點的基類名稱及其功能 必要/可選 裝載位置
com.ibm.sr.api.SRTemplateValidator:提供了對 WSRR 中所儲存文件模板的校驗操作 必要 ValidationProperties 配置檔案的 validators 項
com.ibm.sr.api.SRContentUpdateValidator:在 WSRR 的當前實現中,該檢驗器保證了釋出到WSRR 的文件內容不能被修改,這一點主要是確保和釋出文件相關的邏輯元素不能被意外的刪除。如果要改變這些邏輯元素,則對應的物理文件本身必須被刪除後重新發布 可選 ValidationProperties 配置檔案的 validators 項
com.ibm.sr.governance.api.SRGovernanceValidator:提供了對 WSRR 中所儲存文件的治理操作 必要 ValidationProperties 配置檔案的 governanceValidators 項
com.ibm.sr.governance.validator.GovernancePolicyValidator:提供了基於釋出到 WSRR 的文件後設資料(屬性、關係、分類等)以及文件內容本身的校驗操作。它能夠控制何種操作可以被施加到相應的文件實體上 可選 ValidationProperties 配置檔案的 validators 和 governanceValidators 項
com.ibm.sr.api.SRBusinessModelValidator:提供對 WSRR 擴充套件的業務模型的校驗操作 必要 ValidationProperties 配置檔案的 validators 項
com.ibm.sr.api.ServiceRegistryNotifierJMS:提供針對釋出文件到 WSRR 等相關事件的 JMS 主題通知操作 必要 ValidationProperties 配置檔案的 notifiers 和 governanceNotifiers 項

上表所示,本文所關注的 WS-I 互操作性校驗主要基於com.ibm.sr.governance.validator.GovernancePolicyValidator 的治理策略校驗器。該校驗器能夠提供最細粒度的文件治理能力,即通過檢驗被校驗的 WSRR 實體所關聯的屬性,或者是該實體內容本身的一些特徵,來判斷某個或者某些操作是否可以被施加到該實體上。這種控制關係可以以規則的形式寫在 XML 文件中,並被裝載到 WSRR 上執行生效。這裡治理策略可以監控的實體上的操作包括:

  • 建立(create)
  • 更新(update)
  • 刪除(delete)
  • 狀態轉換(transition)
  • 校驗(validate)
  • 治理化(make_governable)
  • 移除治理(remove_governance)

使用 WSRR 的治理策略進行校驗的基本流程如圖 2-1:


圖2-1 WSRR 中治理策略校驗器執行治理策略的流程

2-1所示,治理策略校驗對 WSRR 而言是可選的,所以如果需要使用相應的校驗策略就必須進行相應的配置。有關配置治理策略的方法,將在下一節中結合 WS-I 校驗這一具體的策略來進行說明。

3. 在 WSRR V6.2中進行 WS-I 互操作性校驗

3.1 WS-I Basic Profile 概述

WS-I 規範系列對於應用開發人員,尤其是面向服務的應用開發人員而言已經不是很新鮮的事物了。數年前當 Web 服務規範在分散式應用中得到廣泛應用的時候,尤其是國際上諸多IT廠商(如 IBM,Microsoft,BEA,Oracle 等)都以對 Web 服務的支援作為產品系列的主要特性後,基於 Web 服務的互操作性問題就已經浮出水面。Web 服務互操作組織(Web Services Interoperability Organization)自2003年伊始,先後推出了 WS-I Basic Profile 的 1.0, 1.1, 1.2和2.0 版本,並且針對某些 Web 服務的非功能屬性也提出了相應的互操作規範。自此,各主要廠商也在自己的開發工具中嵌入對 WS-I 互操作性的校驗。

WSRR 從 6.2 版本開始關注 WS-I 校驗對它所儲存的服務後設資料的應用。首先被 WSRR 採納的 WS-I 規範是 WS-I Basic Profile 1.1,它也是目前 IBM 在主流的 J2EE 和 Web 服務開發工具(如 Rational Software Architect V7,WebSphere Integration Developer V6.1等)中所使用的 WS-I 規範版本。

WS-I Basic Profile 規範包含了一組公有的 Web 服務規範,以及建立在這一組規範之上的宣告、修正、解釋和擴充套件,以期提高這些規範之間的互操作能力。WS-I Basic Profile 規範通篇定義了大批斷言性質的規則,這些規則主要對以下內容進行了約束:

  • Web服務執行時傳遞的 SOAP 訊息格式
  • 服務描述語言(即 WSDL)的格式
  • 基於 UDDI 的服務釋出和發現機制
  • 執行時安全性配置

鑑於 WSRR 在 SOA 應用中所處的角色,它在V6.2中所關注的規則集合主要是面向 WSDL的相關約束,即在 WS-I Basic Profile 1.1規範 的“Service Description”一節中所涉及的規則。這一節中一共列舉了97條規則:

  • 有 61 條規則是對 WSDL 文件的結構和內容給出的約束,它們是 WSRR V6.2 所關心的部分,因而在 WS-I 校驗器的策略範圍之內;
  • 另外 36 條規則與 WSDL 的執行時支援相關:它們是對基於 WSDL 描述生成的 SOAP 訊息的約束,或者是對執行時應用程式對 WSDL 的個性化解釋的規定。這些都不是 WSRR V6.2 所關心的部分,因而也不在 WS-I 校驗器的策略範圍之內。

3.2 在 WSRR V6.2 中配置 WS-I 文件校驗器

在 WSRR V6.2 中配置 WS-I 文件校驗器的基本步驟與配置每個治理策略校驗器的步驟基本相同。下面將對配置步驟做以下的簡要概述:

更新WSRR校驗配置檔案

從 WSRR V6.1 開始,WSRR 通過 Web 介面提供了便捷的編輯介面來修改校驗配置檔案,而不再僅僅提供面向 WebSphere Application Server 的 JACL 指令碼來進行檔案更新。WSRR V6.2提倡使用 Web UI 來更新配置檔案。首先將 WSRR 控制檯切換到“Configuration”檢視。在左側的導航樹中,定位到 Active Configuration ProfilePlug-insValidation Properties,並點選“Validation Properties”,如圖 3-1 所示。


圖 3-1 校驗器配置檔案編輯介面

在右側的校驗配置列表中,直接點選“Validation properties plug-in (ValidationProperties)”連結開啟如圖 3-2 預設的校驗配置檔案。


圖3-2 預設校驗配置檔案編輯器

3-2所示,可以從校驗配置檔案編輯器中看到預設的校驗配置。如本文的第 2 節所述,為了使治理策略發揮其校驗能力,即當對 WSRR 中所儲存的後設資料文件進行如本文第 2 節所述的相關操作時能夠執行該治理策略,必須在配置檔案中的 validators 以及 governanceValidators 項中裝載治理策略校驗器。要做到這一步,只需要在這兩項的已有內容後附上 com.ibm.sr.governance.validator.GovernancePolicyValidator 就可以了。將如下所示的配置檔案內容更新到上圖所示的編輯器中,並點選 OK 按鈕。


清單 3-1. WSRR 的校驗配置檔案

...
#
# Validator classes called by the default service registry 
validation functions
#
# These validators are called for all document types
validators=com.ibm.sr.api.SRTemplateValidator,com.ibm.sr.api.
SRBusinessModelValidator,com.ibm.sr.uddi.validator.UDDIImgValidator,
com.ibm.sr.governance.validator.GovernancePolicyValidator

# These validators are called for governed objects only
governanceValidators=com.ibm.sr.governance.api.
SRGovernanceValidator,com.ibm.sr.governance.validator.
GovernancePolicyValidator

建立並裝載 WS-I 校驗策略檔案

所有能夠為治理策略校驗器所執行的策略必須使用 WSRR V6.2 支援的格式給出該策略的定義,WS-I 校驗策略也不例外。建立名為 WSI-Policy.xml 的 XML 檔案,並設定檔案內容如下:


清單 3-2. WS-I 校驗策略配置檔案

 
 
   
     
       
       
        CREATE
        MAKE_GOVERNABLE
        TRANSITION 
       
       
         
          
           
         
       
     
    


該檔案實際上是使用 WS-Policy Framework V1.2 規範給出的一個標準的 Web 服務策略表達。該服務策略的領域斷言為 WSRR 自定義的治理策略(名字空間為http://www.ibm.com.policy/GovernancePolicyDomain)。基於本文第 2 節中的說明可以看出如上 WS-I 校驗策略是如何定義的:

  • wsrrgp:ContentApplicabilityFilter 元素的 wsrrgp:targetXPath 屬性給出了該校驗策略所作用的目標文件型別——/WSRR/WSDLDocument 表明 WS-I 校驗將只會作用於 WSRR 所儲存的 WSDL 文件;
  • wsrrgp:WSRROperationFilter 元素的 wsrrgp:WSRROperation 子元素定義了該校驗策略所監控的對目標文件的操作。在上面的策略定義中,通過 3 個 wsrrgp:WSRROperation 子元素指定 WS-I 校驗策略將會監控對 WSDL 文件的建立、治理使能以及狀態裝換 3 種操作;
  • wsrrgp:EntityAssertionPolicy 元素定義了使能 WS-I 校驗的基本配置。它通過wsrrgp:PluginAssertion 子元素指定實現 WS-I 校驗器的類來自 wsrrgp:class 屬性給出的 com.ibm.sr.policy.wsi.WSIComplianceValidator,而執行 WS-I 校驗時的選項為“rules=WSIBasicProfile11;report=true”。對該選項的理解是:

(1)rules=WSIBasicProfile11指定當前使用的 WS-I Basic Profile 版本為1.1。在 WSRR V6.2中,每個版本的 WS-I Basic Profile 規則被寫為單獨的一個規則檔案。該規則檔案基於 Schematron 規範定義的格式,感興趣的讀者可以從圖3-1中 WSRR “Configuration”檢視導航樹的 Active Configuration ProfilePlug-insDocument Content Policies 項中看到 WSRR 已經裝載的 WS-I Basic Profile 規則檔案;

(2)report=true 指定生成 WS-I 校驗報告的方式為生成報告文件,即每當執行相關的操作觸發 WS-I 校驗,校驗結果會以文件的形式生成並儲存在 WSRR 中。而如果該選項設定為“report=false”,WSRR 不會為校驗結果生成另外的文件,而直接在介面上以校驗錯誤的形式提示使用者。

對該檔案的裝載也是要在 WSRR 的“Configuration”檢視中完成。如3-3所示,在導航樹中定位到 Active Configuration ProfilePlug-insGovernance Policies,並點選“Governance Policies”。


圖3-3 在“Configuration”檢視中開啟治理策略管理介面

在右側頁面中點選“Load Governance Policy”按鈕。在生成的介面中點選“Browse”按鈕,並在彈出的檔案導航對話方塊中定位到剛剛生成的 WSI-Policy.xml 檔案。為該待裝載檔案命名為“WS-I Policy”,並點選 OK 按鈕(如3-4所示):


圖3-4 裝載 WS-I 校驗策略檔案到 WSRR

如果 WSRR 的 Web 控制檯顯示如下的介面,則表明 WS-I 校驗策略已經裝載成功,否則請讀者檢查自己的策略文件格式和內容。


圖3-5 成功裝載 WS-I 策略檔案

至此,已經完成了對 WS-I 文件校驗器的配置。在下一節中通過例子來說明如何在 WSRR 中使用該校驗器。

4. 一個股票報價服務的 WS-I 校驗示例

在開始本文的示例之前,需要將 WSRR 切換到“Administrator”(或者“User”)檢視。您可以下載本系列 JK 證券公司案例中基金申購流程中所使用到的股票報價服務的 WSDL 檔案 StockQuoteServiceSample.wsdl。JK 證券公司所提供的股票報價服務將面向 Internet 上所有的註冊使用者公開,而這些使用者所在的客戶端平臺完全可能是異構的(例如,一個客戶在 Windows 平臺使用 .NET 開發 Web 服務客戶端來呼叫該服務)。這樣該公司必須保證股票報價服務介面描述具有互操作性,即滿足 WS-I 的相關約束。現在該公司希望通過 WSRR 中的 WS-I 治理策略來完成對服務 WSDL 檔案的校驗。如圖4-1所示在 WSRR 中上載該 WSDL 檔案:


圖4-1上載 WSDL 檔案

StockQuoteServiceSample.wsdl 檔案不包含任何匯入檔案,只需在上載檔案頁面點選 “Finish” 按鈕。


圖4-2 提交 WSDL 檔案

在生成的頁面中,點選 StockQuoteServiceSample.wsdl,可以看到 WSRR 為上載的 WSDL 文件生成了一個名為“_WSIComplianceReport”的關係:


圖4-3 上載的 WSDL 文件屬性

點選“_WSIComplianceReport”關係下的 StockQuoteServiceSample.wsdl,可以看到剛剛在執行建立操作時進行 WS-I 校驗生成的報告文件。點選 Content 選項卡,可以看到該報告的內容,如圖 4-4 所示。


圖4-4 WS-I 校驗報告

該報告顯示,StockQuoteServiceSample.wsdl 文件共有9條 WS-I 相容性校驗資訊,包括 4 條錯誤資訊(分別是由於該 WSDL 檔案違反了 R2206和 R2102規則約束所產生)和5條警告資訊(分別是由於該 WSDL 檔案違反了 R2202、R2207、R2709和 R2719規則約束所產生)。每條報告都詳細說明了該文件觸發錯誤或者警告的相關元素,便於使用者糾錯或者獲取進一步的診斷資訊。

在上一節配置 WS-I 校驗器時,曾經指定能觸發 WS-I 校驗的操作包括建立、治理使能和狀態遷移。因為選定了為每次校驗生成報告,所以隨著這些操作的執行,如上的報告文件在每次操作後都會重新生成並覆蓋舊檔案。為了更加明晰的理解這裡的報告生成機制,在左側的導航樹中定位到 Service DocumentsOther Documents,並在右側的文件列表中選中並刪除報告文件 StockQuoteServiceSample.wsdl,如圖 4-5。


圖4-5 刪除為 WSDL 文件生成的 WS-I 校驗文件

在左側的導航樹中定位到 Service DocumentsWSDL Documents,在右側點選StockQuoteServiceSample.wsdl 連結重新開啟上載的 WSDL 文件屬性頁面,並切換到 Governance


圖4-6 上載的 StockQuoteServiceSample.wsdl 文件治理介面

在如4-6所示的介面下點選 Govern 按鈕,並重新切換回 Details 選擇卡。這時可以發現類似4-4所示的那樣,WS-I 報告檔案再次被生成。這是因為剛剛對 Govern 按鈕的點選觸發了 StockQuoteServiceSample.wsdl 文件上的治理使能操作,所以 WS-I 校驗再次被執行。讀者還可以嘗試在文件治理狀態下對文件進行狀態遷移,檢查是否仍然可以觸發 WS-I 校驗。

最後需要說明一下,如果在上一節的 WS-I 策略檔案中為 WS-I 校驗指定了 report=false 選項,那麼 WSRR 不會為校驗生成類似上面的報告檔案,相反會直接給出如下的異常頁面。


圖4-7進行 WS-I 校驗時生成的異常頁面

基於以上兩種不同的校驗效果,使用者可以根據自己的喜好或者應用需求來選擇配置策略檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-589251/,如需轉載,請註明出處,否則將追究法律責任。

相關文章