md5校验:在 WSRR 6.2 中使用治理策略框架进行 WS-I 校验

  1. 引言

  IBM® WebSphere® Service Registry and Repository(以下简称为 WSRR)是 IBM 推出重要 SOA 企业级产品它通过对 SOA 应用中服务治理和维护提供 SOA 应用在更多方面和更大范围灵活性和可控性从而提升业务价值

  用户可以使用 WSRR 方面很多:用户可以存储整个 SOA 应用生命周期中可能用到服务元数据到 WSRR 中以便于实现设计和开发阶段服务元数据复用运行时服务动态部署后服务例子元数据动态维护等;WSRR提供了基于 Web 页面友好用户界面用户可以方便使用UI来完成各种操作;WSRR 还提供了多种扩展点和 API便于应用开发人员定制、开发适合于本商业应用软件Software从而便捷引用 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.ServiceRegistryNotierJMS:提供针对发布文档到 WSRR 等相关事件 JMS 主题通知操作 必要 ValidationProperties 配置文件 notiers 和 governanceNotiers 项



  如上表所示本文所关注 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 中治理策略校验器执行治理策略流程

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

  如表2-1所示治理策略校验对 WSRR 而言是可选所以如果需要使用相应校验策略就必须进行相应配置有关配置治理策略思路方法将在下节中结合 WS-I 校验这具体策略来进行介绍说明

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

  3.1 WS-I Basic Profile 概述

  WS-I 规范标准系列对于应用开发人员尤其是面向服务应用开发人员而言已经不是很新鲜事物了数年前当 Web 服务规范标准在分布式应用中得到广泛应用时候尤其是国际上诸多IT厂商(如 IBMMicrosoftBEAOracle 等)都以对 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 V7WebSphere 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 ProfilePlug-insValidation Properties并点击“Validation Properties”如图 3-1 所示

  图 3-1 校验器配置文件编辑界面

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

  在右侧校验配置列表中直接点击“Validation properties plug-in (ValidationProperties)”链接打开如图 3-2 缺省校验配置文件

  图3-2 缺省校验配置文件编辑器

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

  如图3-2所示可以从校验配置文件编辑器中看到缺省校验配置如本文第 2 节所述为了使治理策略发挥其校验能力即当对 WSRR 中所存储元数据文档进行如本文第 2 节所述相关操作时能够执行该治理策略必须在配置文件中 validators 以及 governanceValidators 项中装载治理策略校验器要做到这只需要在这两项已有内容后附上 com.ibm.sr.governance.validator.GovernancePolicyValidator 就可以了将如下所示配置文件内容更新到上图所示编辑器中并点击 OK 按钮

  清单 3-1. WSRR 校验配置文件

...
#
# Validator es 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 _disibledevent=>SRGovernanceValidator,com.ibm.sr.governance.validator.
GovernancePolicyValidator


  创建并装载 WS-I 校验策略文件

  所有能够为治理策略校验器所执行策略必须使用 WSRR V6.2 支持格式给出该策略定义WS-I 校验策略也不例外创建名为 WSI-Policy.xml XML 文件并设定文件内容如下:

  清单 3-2. WS-I 校验策略配置文件

<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy wsu:Id="uuid:governanceProfileThing"
Name="GovernanceProfilePolicy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
 oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsrrgp="http://www.ibm.com.policy/GovernancePolicyDo">
 <wsrrgp:ValidatorPolicy
  wsrrgp:name="plugin_wsi_validation_policy">
  <wsp:Policy>
   <wsrrgp:ContentApplicabilityFilter
    wsrrgp:targetXPath="/WSRR/WSDLDocument"/>
   <wsrrgp:WSRROperationFilter>
    <wsrrgp:WSRROperation>CREATE</wsrrgp:WSRROperation>
    <wsrrgp:WSRROperation>MAKE_GOVERNABLE</wsrrgp:WSRROperation>
    <wsrrgp:WSRROperation>TRANSITION</wsrrgp:WSRROperation>
   </wsrrgp:WSRROperationFilter>
   <wsrrgp:EntityAssertionPolicy
    wsrrgp:name="plugin_wsi_status_check">
    <wsp:Policy Name="plugin_wsi_status_policy_check">
     <wsrrgp:PluginAssertion
     wsrrgp:name="Invoking WS-I Compliance Validation Check"
     wsrrgp:="com.ibm.sr.policy.wsi.WSIComplianceValidator"
     wsrrgp:options="rules=WSIBasicProfile11;report=true">
     </wsrrgp:PluginAssertion>
    </wsp:Policy>
   </wsrrgp:EntityAssertionPolicy>
  </wsp:Policy>
 </wsrrgp:ValidatorPolicy> 
</wsp:Policy>


  该文件实际上是使用 WS-Policy Framework V1.2 规范标准给出个标准 Web 服务策略表达该服务策略领域断言为 WSRR 自定义治理策略(名字空间为http://www.ibm.com.policy/GovernancePolicyDo)基于本文第 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: 属性给出 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 ProfilePlug-insGovernance Policies并点击“Governance Policies”

  图3-3 在“Configuration”视图中打开治理策略管理界面

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

  在右侧页面中点击“Load Governance Policy”按钮在生成界面中点击“Browse”按钮并在弹出文件导航对话框中定位到刚刚生成 WSI-Policy.xml 文件为该待装载文件命名为“WS-I Policy”并点击 OK 按钮(如图3-4所示):

  图3-4 装载 WS-I 校验策略文件到 WSRR

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

  如果 WSRR Web 控制台显示如下界面则表明 WS-I 校验策略已经装载成功否则请读者检查自己策略文档格式和内容

  图3-5 成功装载 WS-I 策略文件

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

  至此已经完成了对 WS-I 文档校验器配置在下节中通过例子来介绍说明如何在 WSRR 中使用该校验器

  4. 个股票报价服务 WS-I 校验举例

  在开始本文举例的前需要将 WSRR 切换到“Administrator”(或者“User”)视图您可以下载本系列 JK 证券公司案例中基金申购流程中所使用到股票报价服务 WSDL 文件 StockQuoteServiceSample.wsdlJK 证券公司所提供股票报价服务将面向 Internet 上所有注册用户公开而这些用户所在客户端平台完全可能是异构(例如个客户在 Windows 平台使用 .NET 开发 Web 服务客户端来该服务)这样该公司必须保证股票报价服务接口描述具有互操作性即满足 WS-I 相关约束现在该公司希望通过 WSRR 中 WS-I 治理策略来完成对服务 WSDL 文件校验如图4-1所示在 WSRR 中上载该 WSDL 文件:

  图4-1上载 WSDL 文件

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

  StockQuoteServiceSample.wsdl 文件不包含任何导入文件只需在上载文件页面点击 “Finish” 按钮

  图4-2 提交 WSDL 文件

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

  在生成页面中点击 StockQuoteServiceSample.wsdl可以看到 WSRR 为上载 WSDL 文档生成了个名为“_WSIComplianceReport”关系:

  图4-3 上载 WSDL 文档属性

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

  点击“_WSIComplianceReport”关系下 StockQuoteServiceSample.wsdl可以看到刚刚在执行创建操作时进行 WS-I 校验生成报告文档点击 Content 选项卡可以看到该报告内容如图 4-4 所示

  图4-4 WS-I 校验报告

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

  该报告显示StockQuoteServiceSample.wsdl 文档共有9条 WS-I 兼容性校验信息包括 4 条信息(分别是由于该 WSDL 文件违反了 R2206和 R2102规则约束所产生)和5条警告信息(分别是由于该 WSDL 文件违反了 R2202、R2207、R2709和 R2719规则约束所产生)每条报告都详细介绍说明了该文档触发或者警告相关元素便于用户纠错或者获取进诊断信息

  在上节配置 WS-I 校验器时曾经指定能触发 WS-I 校验操作包括创建、治理使能和状态迁移选定了为每次校验生成报告所以随着这些操作执行如上报告文档在每次操作后都会重新生成并覆盖旧文件为了更加明晰理解这里报告生成机制在左侧导航树中定位到 Service DocumentsOther Documents并在右侧文档列表中选中并删除报告文档 StockQuoteServiceSample.wsdl如图 4-5

  图4-5 删除为 WSDL 文档生成 WS-I 校验文档

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

  在左侧导航树中定位到 Service DocumentsWSDL Documents在右侧点击StockQuoteServiceSample.wsdl 链接重新打开上载 WSDL 文档属性页面并切换到 Governance

  图4-6 上载 StockQuoteServiceSample.wsdl 文档治理界面

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

  在如图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 校验时生成异常页面

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

  基于以上两种区别校验效果用户可以根据自己喜好或者应用需求来选择配置策略文件

  5. 小结

  本文在介绍 WSRR 治理策略框架基础的上重点介绍了 WSRR V6.2 新推出 WS-I 策略校验机制和配置思路方法最后通过个具体案例介绍说明了使用 WSRR 控制台进行 WS-I 校验基本步骤

Tags:  校验码 奇偶校验 md5校验工具 md5校验

延伸阅读

最新评论

发表评论