Suporte do Web Services Resource Framework
O suporte do Web Services Resource Framework (WSRF) no WebSphere Application Server fornece o ambiente para aplicativos de serviços da Web que seguem as especificações do OASIS WSRF.
Visão Geral do WSRF
As interfaces de serviço da Web precisam, geralmente, fornecer interações com preservação de estado com os clientes do serviço. Por exemplo, uma interface de serviço da Web como um carrinho de compras, em que o resultado de uma operação influencia na realização de operações bemsucedidas. O OASIS Web Services Resource Framework (WSRF) define uma estrutura genérica para modelagem e acesso de recursos stateful usando os serviços da Web, para facilitar a definição e implementação de um serviço e a integração e o gerenciamento de diversos serviços.
O WSRF apresenta o conceito de uma descrição de documento XML, chamada esquema de documento de propriedades do recurso, que é referida pela descrição do WSDL de um serviço da Web e que descreve explicitamente uma exibição do estado do recurso com o qual o cliente interage. Um serviço descrito dessa maneira e chamado de WS-Resource.

<wsa:EndpointReference>
<wsa:Address>
http://www.example.com/service
</wsa:Address>
<wsa:ReferenceParameters>
<tns:SomeDisambiguatorElement>C</tns:SomeDisambiguatorElement>
</wsa:ReferenceParameters>
...
</wsa:EndpointReference>
Cada WS-Resource possui um documento de propriedades de recurso (um documento da instância XML) que descreve uma visualização do estado do recurso. O WSDL para um WS-Resource identifica o esquema XML que descreve o tipo do documento de propriedades de recurso por meio de um atributo ResourceProperties do elemento wsdl:PortType. Especificando essa extensão padrão do WSDL para o esquema do documento de propriedades de recurso, o WSRF ativa a definição de mensagens simples e genéricas que interagem com o 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">
Cada WS-Resource possui uma instância exclusiva do documento de propriedades de recurso lógico que é uma visualização do estado do recurso. A especificação WS-ResourceProperties descreve as mensagens de protocolos interoperáveis que um WS-Resource pode implementar para obter, configurar ou consultar o estado do recurso, operando no documento de propriedades de recurso. Algumas dessas operações afetam o documento de propriedades de recurso inteiro e algumas operam em um ou mais elementos no documento (as propriedades de recursos individuais, por exemplo pr:printer_name). Cada WS-Resource pode ter um ciclo de vida finito e pode ser criado e destruído; a especificação WS-ResourceLifetime descreve as mensagens de protocolo interoperável que um WS-Resource pode implementar para destruí-lo ou para alterar seu tempo de término.
Para obter informações sobre o WSRF, consulte o documento WSRF Primer publicado pelo OASIS Technical Committee.
Modelo de Programação do WSRF
As especificações do WSRF definem apenas as mensagens do protocolo e o comportamento semântico de um WS-Resource quando ele processa essas mensagens; as especificações não prescrevem o meio para implementar objetos WS-Resource. O WSRF é antes de tudo um protocolo de nível do aplicativo e as ferramentas para implementação do WS-Resources são as mesmas que são usadas para implementação de qualquer outro tipo de serviço da Web. O WSRF usa referências de terminal do WS-Addressing e o modelo de programação de aplicativos para WS-Resources é semelhante ao modelo de qualquer serviço da Web que utilize o WS-Addressing.
- O WSRF requer o atributo ResourceProperties no elemento wsdlPortType. Esse atributo declara que o elemento portType é implementado por um WS-Resource em vez de um serviço da Web genérico. O WS-Resource deve declarar quais operações do WSRF ele suporta, copiando essas operações para o elemento portType de sua definição WSDL. O WS-Resource é livre para escolher qualquer estratégia de implementação para representar o recurso com preservação de estado e processar as mensagens do WSRF; é possível implementar um recurso utilizando uma classe Java™ simples, um enterprise bean de sessão sem estado, um bean de entidade auxiliado por um banco de dados relacional, um SDO (Service Data Object), etc.
- O WSRF define uma hierarquia de tipos Java BaseFault.