在WSRR 6.2 中使用治理策略框架進行WS-I 校驗
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 互操作性校驗的基本理念和使用方法。
為了提高 WSRR 產品的擴充套件性,增強其對所管理的文件的治理能力,WSRR 提供了多個可插入點(Plug-in),允許使用者或是使用 WSRR 做應用開發的人員定製、裝載特定於企業應用的檢驗器或者策略。主要的插入點如下表所示:
插入點的基類名稱及其功能 | 必要/可選 | 裝載位置 |
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 而言是可選的,所以如果需要使用相應的校驗策略就必須進行相應的配置。有關配置治理策略的方法,將在下一節中結合 WS-I 校驗這一具體的策略來進行說明。
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 所示。
在右側的校驗配置列表中,直接點選“Validation properties plug-in (ValidationProperties)”連結開啟如圖 3-2 預設的校驗配置檔案。
如圖3-2所示,可以從校驗配置檔案編輯器中看到預設的校驗配置。如本文的第 2 節所述,為了使治理策略發揮其校驗能力,即當對 WSRR 中所儲存的後設資料文件進行如本文第 2 節所述的相關操作時能夠執行該治理策略,必須在配置檔案中的 validators 以及 governanceValidators 項中裝載治理策略校驗器。要做到這一步,只需要在這兩項的已有內容後附上 com.ibm.sr.governance.validator.GovernancePolicyValidator 就可以了。將如下所示的配置檔案內容更新到上圖所示的編輯器中,並點選 OK 按鈕。
... # # 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 檔案,並設定檔案內容如下:
|
該檔案實際上是使用 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 ProfilePlug-insDocument 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所示):
如果 WSRR 的 Web 控制檯顯示如下的介面,則表明 WS-I 校驗策略已經裝載成功,否則請讀者檢查自己的策略文件格式和內容。
至此,已經完成了對 WS-I 文件校驗器的配置。在下一節中通過例子來說明如何在 WSRR 中使用該校驗器。
在開始本文的示例之前,需要將 WSRR 切換到“Administrator”(或者“User”)檢視。您可以下載本系列 JK 證券公司案例中基金申購流程中所使用到的股票報價服務的 WSDL 檔案 StockQuoteServiceSample.wsdl。JK 證券公司所提供的股票報價服務將面向 Internet 上所有的註冊使用者公開,而這些使用者所在的客戶端平臺完全可能是異構的(例如,一個客戶在 Windows 平臺使用 .NET 開發 Web 服務客戶端來呼叫該服務)。這樣該公司必須保證股票報價服務介面描述具有互操作性,即滿足 WS-I 的相關約束。現在該公司希望通過 WSRR 中的 WS-I 治理策略來完成對服務 WSDL 檔案的校驗。如圖4-1所示在 WSRR 中上載該 WSDL 檔案:
StockQuoteServiceSample.wsdl 檔案不包含任何匯入檔案,只需在上載檔案頁面點選 “Finish” 按鈕。
在生成的頁面中,點選 StockQuoteServiceSample.wsdl,可以看到 WSRR 為上載的 WSDL 文件生成了一個名為“_WSIComplianceReport”的關係:
點選“_WSIComplianceReport”關係下的 StockQuoteServiceSample.wsdl,可以看到剛剛在執行建立操作時進行 WS-I 校驗生成的報告文件。點選 Content 選項卡,可以看到該報告的內容,如圖 4-4 所示。
該報告顯示,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。
在左側的導航樹中定位到 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 不會為校驗生成類似上面的報告檔案,相反會直接給出如下的異常頁面。
基於以上兩種不同的校驗效果,使用者可以根據自己的喜好或者應用需求來選擇配置策略檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-589251/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在ossphpsdk進行crc64校驗PHP
- 使用Moya庫,進行https證書校驗HTTP
- 自定義註解|切面|反射|策略模式進行入參比較校驗反射模式
- AntD框架上傳檔案前校驗資訊:選擇檔案前進行內容校驗並提示框架
- springMVC:校驗框架:多規則校驗,巢狀校驗,分組校驗;ssm整合技術SpringMVC框架巢狀SSM
- 使用Handy Backup 6.2進行資料備份方法
- haipproxy核心校驗和排程策略AI
- SOA治理最佳策略:小幅起步循序漸進
- 使用go在mongodb中進行CRUD操作MongoDB
- 前端框架小實驗-在umi框架中以worker執行緒方式使用SQL.js的wasm前端框架執行緒SQLJSASM
- SpringCloud系列使用Eureka進行服務治理SpringGCCloud
- 在Linux Shell程式中進行身份驗證(轉)Linux
- NET Core 多身份校驗與策略模式模式
- ActionCable 中怎樣使用 devise 進行驗證dev
- pt-table-checksum進行主從資料校驗
- 前端使用bcrypt對密碼加密,伺服器對密碼進行校驗前端密碼加密伺服器
- 行式填報 資料校驗 --- 小計校驗
- vxe-table 校驗,根據行屬性校驗
- 在實際使用智慧合約中需要預言機對資料進行驗證
- thinkphp中ajax使用者名稱校驗PHP
- SpringMVC(3)- 校驗框架、SSM整合SpringMVC框架SSM
- 提高你的Java程式碼質量吧:使用valueof前必須進行校驗Java
- 使用組策略進行賬戶安全配置
- SpringBoot如何優雅的進行引數校驗Spring Boot
- 測試開發專題:如何在spring-boot中進行引數校驗Springboot
- Node 在 Controller 層如何進行資料校驗Controller
- Lotus Expeditor 6.2 中 Generic Container 框架簡介AI框架
- 技術分享 | 使用 sync_diff_inspector 對兩個 MySQL 進行資料校驗MySql
- spring-boot 使用hibernate validation對引數進行優雅的校驗Springboot
- 在.Net Web Api中使用FluentValidate進行引數驗證WebAPI
- Spring AOP @PathVariable和@RequestParam 引數進行校驗(valid)Spring
- 在Delphi中使用正規表示式校驗身份證號
- 在Linux Shell程式中進行身份驗證[修訂版] (轉)Linux
- 數字政府治理的行動框架框架
- 在ListCtrl中進行排序 (轉)排序
- 用Servlet進行使用者名稱和密碼校驗Servlet密碼
- [資料校驗/資料質量] 資料校驗框架(Java):hibernate-validation框架Java
- 封裝axios請求並對提交引數進行校驗封裝iOS