Prise en charge Web Services Resource Framework
La prise en charge de WSRF (Web Services Resource Framework) dans WebSphere Application Server fournit l'environnement pour les applications de services Web conformes aux spécifications WSRF d'OASIS.
Présentation de WSRF
Les interfaces de services Web requièrent souvent des interactions dynamiques avec les clients du service. par exemple, une interface de services Web telle, qu'un panier d'achat, pour lequel le résultat d'une opération influence l'exécution des opérations suivantes. OASIS Web Services Resource Framework (WSRF) définit une infrastructure générique de modélisation des ressources dynamiques et d'accès à ces dernières à l'aide des services Web, afin de faciliter la définition et l'implémentation d'un service, ainsi que l'intégration et la gestion de plusieurs services.
WSRF met en oeuvre le concept de description de document XML appelé schéma de document de propriétés de ressources, qui est référencé par la description WSDL d'un service Web et qui décrit une vue de l'état de la ressource avec laquelle le client interagit. Un service décrit de cette façon est appelé WS-Resource (Ressource WS).

<wsa:EndpointReference>
<wsa:Address>
http://www.example.com/service
</wsa:Address>
<wsa:ReferenceParameters>
<tns:SomeDisambiguatorElement>C</tns:SomeDisambiguatorElement>
</wsa:ReferenceParameters>
...
</wsa:EndpointReference>
Chaque WS-Resource comporte un document de propriétés de ressources (un document d'instance XML) qui décrit une vue de l'état de la ressource. Le WSDL d'une WS-Resource identifie le schéma XML qui décrit le type du document de propriétés de ressources via un attribut ResourceProperties de l'élément wsdl:PortType. En spécifiant cette extension WSDL standard pour le schéma de document de propriétés de ressources, WSRF permet la définition de messages simples génériques qui interagissent avec la 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">
Chaque WS-Resource a une instance de document de propriétés de ressources logique et unique qui est une vue de l'état de la ressource. La spécification WS-ResourceProperties décrit les messages de protocole interopérable qu'une WS-Resource peut implémenter pour obtenir, définir ou interroger l'état de la ressource par une action sur le document de propriétés de ressources. Certaines de ces opérations affectent le document de propriétés de ressources dans son intégralité et certaines d'entre elles agissent sur un ou plusieurs éléments au sein du document (les propriétés de ressources individuelles telles que pr:printer_name). Chaque WS-Resource peut avoir un cycle de vie limité et peut être créée et détruite ; la spécification WS-ResourceLifetime décrit les messages de protocole interopérable qu'une WS-Resource peut implémenter pour procéder à sa suppression ou à la modification de son heure de fin.
Pour plus d'informations sur le WSRF, voir le document WSRF Primer publié par le comité technique d'OASIS.
Modèle de programmation WSRF
La spécification WSRF définit uniquement les messages de protocole et le comportement sémantique attendus d'une WS-Resource lorsqu'elle traite ces messages ; les spécifications ne prescrivent pas les moyens d'implémentation des objets WS-Resource. WSRF est d'abord un protocole de niveau application et les outils d'implémentation des WS-Resources sont identiques à ceux utilisés pour l'implémentation de tout autre type de service Web. WSRF utilise les références de noeud final WS-Addressing et le modèle de programmation des WS-Resources est similaire à celui de tout service Web utilisant WS-Addressing.
- WSRF nécessite l'attribut ResourceProperties sur l'élément wsdlPortType. Cet attribut déclare que l'élément portType est implémenté par une ressource WS-Resource et non par un service Web générique. La WS-Resource doit déclarer les opérations WSRF qu'elle prend en charge en copiant ces opérations dans l'élément portType de sa définition WSDL. La WS-Resource peut librement choisir une stratégie d'implémentation pour représenter la ressource avec état et traiter les messages WSRF. Vous pouvez implémenter une ressource à l'aide d'une simple classe Java™, d'un bean session enterprise sans état, d'un bean entity associé à une base de données relationnelle, d'un objet SDO, etc.
- WSRF définit une hiérarchie de types Java BaseFault.