Mit dem Web Services Resource Framework statusabhängige Web-Services erstellen

Sie können einen statusabhängigen Web-Service als WS-Resource implementieren und mit einer WS-Addressing-Endpunktreferenz auf diesen Web-Service verweisen. WS-Resources werden auf dieselbe Weise und mit denselben Tools wie herkömmliche Web-Services entwickelt. Allerdings müssen einige zusätzliche Tasks ausgeführt werden, die in diesem Artikel beschrieben werden.

Informationen zu diesem Vorgang

Führen Sie diese Task aus, wenn Sie eine WS-Resource erstellen möchten. Eine WS-Resource ist eine Kombination aus einer statusabhängigen Ressource und einem Web-Service, über den auf die Ressource zugegriffen wird. Um diese Task ausführen zu können, müssen Sie mit den Standardentwicklungs-Tasks für Web-Services und den WSRF-Spezifikationen (Web Services Resource Framework) vertraut sein. Eine Einführung in die WSRF-Spezifikationen finden Sie im Dokument OASIS WSRF Primer.

Vorgehensweise

  1. Ermitteln oder erstellen Sie die Ressourcenkomponente, auf die über die WS-Resource zugegriffen werden soll. Diese Ressourcenkomponente kann ein vorhandenes System, eine vorhandene Entität oder eine neue Komponente sein. Die Implementierung der Ressource unterliegt keinen Beschränkungen. Sie können eine einfache Java-Klasse, eine Stateless-Session-EJB, eine durch eine relationale Datenbank gestützte Entity-Bean, ein Service Data Object (SDO), einen Java-Connector oder eine andere Komponente verwenden.
  2. Ermitteln oder erstellen Sie ein Schemadokument für Ressourceneigenschaften für die WS-Resource. Verwenden Sie zum Erstellen eines XML-Schemas IBM® Rational Application Developer for WebSphere oder ein anderes Authoring-Tool für XML-Schemata. Das Schema definiert das XML-Element complexType für das Stammelemente des Ressourceneigenschaftendokuments.
  3. Erstellen oder generieren Sie ein WSDL-Dokument für die Web-Service-Komponente der WS-Resource. Informationen zum Erstellen von WSDL-Dateien finden Sie im Artikel WSDL-Datei für JAX-RPC-Anwendungen entwickeln.
  4. Editieren Sie die WSDL-Datei, und fügen Sie dem Element "portType" ein Attribut "ResourceProperties" hinzu. Dieses Attribut gibt das Stammelement des Ressourceneigenschaftendokuments an, das Sie zuvor erstellt haben. Wenn ein Druckerservice beispielsweise ein Ressourceneigenschaftendokument mit einem Stammelement <printer_properties> im Namespace "http://example.org/printer'" hat, kann das Element "wsdl:portType" wie folgt aussehen:
    <wsdl:portType xmlns:pr="http://example.org/printer"  
                   xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" 
                   name="Printer" wsrf-rp:ResourceProperties="pr:printer_properties">
  5. Stellen Sie ein Mittel bereit, um eine Endpunktreferenz anzufordern, die auf die WS-Resource verweist. Sie können ein Element "wsdl:operation" mit dem Namen "Create" definieren, das eine wsdl:output-Nachricht des Typs "EndpointReferenceType" zurückgibt. Suchen Sie nach einem Beispiel für eine Operation "CreatePrinter", die ein EndpointReference-Objekt für die eine WS-Resource "Printer" zurückgibt.
  6. Definieren Sie jede in WSRF definierte Operation, die die WS-Resource unterstützt, als untergeordnetes Element des Elements "wsdl:portType". Geben Sie für jede in WSRF definierte Operation, die vom Porttyp unterstützt wird, das WS-Addressing-Attribut action in jedem Element wsdl:message an. Die Operation GetResourceProperty ist in der WSDL beispielsweise wie folgt definiert:
    <wsdl:operation name="GetResourceProperty" 
                    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
                    xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2">
      <wsdl:input name="GetResourcePropertyRequest" message="wsrf-rpw:GetResourcePropertyRequest"
        wsaw:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest"/>
      <wsdl:output name="GetResourcePropertyResponse" message="wsrf-rpw:GetResourcePropertyResponse"
        wsaw:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse"/>
      ...
    </wsdl:operation>
    Das Attribut wsaw:Action stellt sicher, dass die in WSRF definierten wsaw:Action-URIs und nicht die Standard-URI-Werte für die in WSRF definierten Nachrichten verwendet werden.
    Anmerkung: Die Spezifikation WS-ResourceProperties setzt das Vorhandensein der Operation GetResourceProperty voraus, wenn das Attribut ResourceProperties im Element PortType enthalten ist.
  7. Folgen Sie den Anweisungen in Schritt des Artikels JAX-RPC-Web-Service-Anwendung erstellen, die Web Services Addressing verwendet, um die Implementierung der WS-Resource zu erstellen, dem Client den Zugriff auf die WS-Resource über eine Endpunktreferenz zu ermöglichen und die Anwendung zu implementieren.

Schemadokument mit Ressourceneigenschaften für die WS-Resource erstellen

Die folgenden Beispiele entsprechen den Schritten 2 bis 4 in der Prozedur. Die Beispiele zeigen, wie eine IT-Organisation eine WS-Resource-Instanz für die Verwaltung eines Druckernetzes nutzen kann. Eine WS-Resource ist per Definition eine Kombination aus einer Ressource und einem Web-Service, über den auf die Ressource zugegriffen wird. Den Beispielen liegt die Annahme zugrunde, dass die Organisation gegenwärtig Web-Services zum Verwalten ihres Druckernetzes verwendet, wie im Artikel JAX-RPC-Web-Service-Anwendung erstellen, die Web Services Addressing verwendet beschrieben.

Die Spezifikation WS-Resource, die ein Teil der Spezifikation Web Services Resource Framework (WSRF) ist, beschreibt, dass eine WS-Resource über eine WS-Addressing-Endpunktreferenz aufgerufen wird und dass eine Sicht des Ressourcenstatus in einem XML-Dokument mit den Ressourceneigenschaften verwaltet wird. Die Verwendung einer WS-Resource für die Darstellung statusabhängiger Ressourcen ist ein Mittel, um mit der Statusdarstellung der Ressourcen zu interagieren, die standardisierte Web-Service-Nachrichten verwenden.

Eine WS-Resource muss ein XML-Dokument mit den Ressourceneigenschaften haben, die mit einem XML-Schema beschrieben werden, das eine bestimmte Sicht des WS-Resource-Status zeigt. Im folgenden Beispiel sehen Sie das WS-Resource-Schemadokument "printer".
<?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_reference" />
        <xsd:element ref="pr:printer_name" />
        <xsd:element ref="pr:printer_state" />
        <xsd:element ref="pr:printer_accepting_jobs" />
        <xsd:element ref="pr:queued_job_count" />
        <xsd:element ref="pr:operations_supported" />
        <xsd:element ref="pr:document_format_supported" />
        <xsd:element ref="pr:job_hold_until_default" 
                     minOccurs="0" />
        <xsd:element ref="pr:job_hold_until_supported" 
                     minOccurs="0"
                     						maxOccurs="unbounded"/>    
        <xsd:element ref="wsrf-rp:QueryExpressionDialect" 
                     						maxOccurs="unbounded"/>    
        <xsd:element ref="pr:job_properties" minOccurs="0" 
                     						maxOccurs="unbounded"/>    
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>
 ...
</schema>
Die WSDL-Definition für den WS-Resource-Server "Printer" entspricht im Wesentlichen dem WS-Addressing-Beispiel, enthält aber zusätzlich ein Attribut "ResourceProperties" im Element "wsdlPortType". Dieses Attribut deklariert, dass der Porttyp von einer WS-Resource und nicht von einem generischen Web-Service implementiert wird. Da die Schnittstelle eine Typdeklaration für das Dokument mit den Ressourceneigenschaften enthält, muss die Schnittstelle auch die in WSRF definierte Operation "GetResourceProperty" enthalten. Diese Operation wird von der Spezifikation WS-ResourceProperties gefordert.
<wsdl:definitions targetNamespace="http://example.org/printer" ...
             xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" 
             xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2"
             xmlns:wsa="http://www.w3.org/2005/08/addressing"
             xmlns:pr="http://example.org/printer">
  <wsdl:types>
    ...
    <xsd:schema...>
      <xsd:element name="CreatePrinterRequest"/>
      <xsd:element name="CreatePrinterResponse" 
                   type="wsa:EndpointReferenceType"/>
	    	    <xsd:import namespace="http://www.w3.org/2005/08/addressing" 
                  schemaLocation="http://www.w3.org/2005/08/addressing/ws-addr.xsd"/>
	    	    <xsd:import namespace=http://docs.oasis-open.org/wsrf/rp-2
                  schemaLocation="http://docs.oasis-open.org/wsrf/rp-2.xsd"/>
    </xsd:schema> 
    <!-- Import WSDL definitions for GetResourceProperties -->
	  	  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/rpw-2" 
                 location="http://docs.oasis-open.org/wsrf/rpw-2.wsdl" />

  </wsdl:types>
  <wsdl:message name="CreatePrinterRequest">
    <wsdl:part name="CreatePrinterRequest" 
               element="pr:CreatePrinterRequest" />
  </wsdl:message>
  <wsdl:message name="CreatePrinterResponse">
    <wsdl:part name="CreatePrinterResponse" 
               element="pr:CreatePrinterResponse" />
  </wsdl:message>

  <!-- Porttyp hat ein Attribut "ResourceProperties", das auf das
  Ressourceneigenschaftendokument verweist -->
  <wsdl:portType name="Printer" wsrf-rp:ResourceProperties="pr:printer_properties">
    <wsdl:operation name="createPrinter">
      <wsdl:input name="CreatePrinterRequest" 
                  message="pr:CreatePrinterRequest" />
      <wsdl:output name="CreatePrinterResponse"
                   message="pr:CreatePrinterResponse" />
    </wsdl:operation>

    <!-- Operation GetResourceProperty gemäß Spezifikation WS-ResourceProperties erforderlich -->
    <wsdl:operation name="GetResourceProperty" 
        <wsdl:input name="GetResourcePropertyRequest" 
                    message="wsrf-rpw:GetResourcePropertyRequest" 
                    wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/
                                                                        GetResourcePropertyRequest"/>
        <wsdl:output name="GetResourcePropertyResponse"
                     message="wsrf-rpw:GetResourcePropertyResponse" 
                     wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/
                                                                       GetResourcePropertyResponse"/>
        <wsdl:fault name="ResourceUnknownFault"
                    message="wsrf-rw:ResourceUnknownFault"/>
        <wsdl:fault name="InvalidResourcePropertyQNameFault"
                    message="wsrf-rpw:InvalidResourcePropertyQNameFault" />     
    </wsdl:operation>
  </wsdl:portType>
</wsdl:definitions>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_wsrf
Dateiname:twbs_wsrf.html