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
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.
<?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>
<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>