在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,便于应用开发人员定制、开发适合于本商业应用的软件从而便捷引用 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 校验策略配置文件

<?xml version="1.0" encoding="UTF-8"?> 
CREATEMAKE_GOVERNABLETRANSITION

该文件实际上是使用 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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-589251/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值