Web Service 资源框架支持
WebSphere® Application Server 中的 Web Service 资源框架 (WSRF) 支持为遵循 OASIS WSRF 规范的 Web Service 应用程序提供了环境。
WSRF 概述
Web Service 接口通常需要提供与服务的客户机的有状态交互。例如,Web Service 接口,如购物车,其中一项操作的结果会影响后续操作的执行。OASIS Web Service 资源框架 (WSRF) 定义了使用 Web Service 对有状态资源进行建模和访问的通用框架,这样就可以更容易地定义和实现服务以及集成和管理多项服务。
WSRF 引进了 XML 文档描述概念(称为资源属性文档模式),此概念由 Web Service 的 WSDL 描述所引用,并且显式地描述客户机与其交互的资源的状态视图。采用此方式描述的服务称为 WS-Resource。

<wsa:EndpointReference>
<wsa:Address>
http://www.example.com/service
</wsa:Address>
<wsa:ReferenceParameters>
<tns:SomeDisambiguatorElement>C</tns:SomeDisambiguatorElement>
</wsa:ReferenceParameters>
...
</wsa:EndpointReference>
每个这样的 WS-Resource 都有一个用来描述资源状态的资源属性文档(一个 XML 实例文档)。WS-Resource 的 WSDL 通过 wsdl:PortType 元素的 ResourceProperties 属性来标识用来描述资源属性文档类型的 XML 模式。通过为资源属性文档模式指定此标准 WSDL 扩展,WSRF 就能够定义简单的与 WS-Resource 交互的基本消息。
<?xml version="1.0"?>
<xsd:schema ...
xmlns:pr="http://example.org/printer.xsd"
targetNamespace="http://example.org/printer.xsd" >
<xsd:element name="printer_properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="pr:printer_name" />
<xsd:element ref="pr:queued_job_count" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
...
</schema>
<wsdl:portType xmlns:pr="http://example.org/printer.xsd"
xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
name="Printer" wsrf-rp:ResourceProperties="pr:printer_properties">
每个 WS-Resource 都具有唯一的逻辑资源属性文档实例,该实例是资源状态的视图。WS-ResourceProperties 规范描述 WS-Resource 可以实现的可互操作的协议消息,以通过对资源属性文档执行操作来获取、设置或查询资源状态。在这些操作中,某些操作会影响整个资源属性文档,而某些操作只对该文档中的一个或多个元素(各个资源属性,例如,pr:printer_name)执行操作。每个 WS-Resource 都可以具有有限的生命周期,并且即可以创建也可以破坏生命周期;WS-ResourceLifetime 规范描述 WS-Resource 资源可以实现的可互操作协议消息以破坏它或者改变它的终止时间。
有关 WSRF 的更多信息,请参阅由 OASIS 技术委员会发布的“WSRF Primer”文档。
WSRF 编程模型
WSRF 规范只定义协议消息以及 WS-Resource 在处理这些消息时期望获得的语义行为;这些规范并没有规定用来实现 WS-Resource 对象的方法。WSRF 主要是应用程序级别协议,而且用于实现 WS-Resource 的工具与用于实现任何其他类型的 Web Service 的工具相同。WSRF 使用 WS-Addressing 端点引用,而且 WS-Resource 的应用程序编程模型类似于任何使用 WS-Addressing 的 Web Service 的模型。
- WSRF 需要 wsdlPortType 元素上的 ResourceProperties 属性。此属性声明 portType 元素是由 WS-Resource 实现而不是由通用 Web Service 实现。WS-Resource 必须声明它支持哪些 WSRF 操作,可通过将这些操作复制到其 WSDL 定义的 portType 元素中来进行声明。WS-Resource 可自由选择任何实现策略来表示有状态资源和处理 WSRF 消息;可以使用简单 Java™ 类、无状态会话企业 Bean、受关系数据库支持的实体 bean、服务数据对象 (SDO) 等来实现资源。
- WSRF 定义 Java BaseFault 类型的层次结构。