WSDL

Web Services Description Language (WSDL) ist eine XML-basierte (Extensible Markup Language) Beschreibungssprache. Diese Sprache wurde dem W3C (World Wide Web Consortium) als Industriestandard für die Beschreibung von Web-Services eingereicht. Die Leistungsstärke von WSDL leitet sich von den beiden Hauptprinzipien der Architektur her: der Beschreibung einer Gruppe von Geschäftsoperationen und die Trennung der Beschreibung in zwei grundlegende Einheiten. Dies sind zum einen eine Beschreibung der Operationen und zum anderen Anweisungen, die festlegen, wie die Operationen und die zugehörigen Informationen gepackt werden sollen.

Ein WSDL-Dokument definiert Services als Sammlung von Netzendpunkten oder Ports. In WSDL sind die abstrakten Definitionen von Endpunkten und Nachrichten von den konkreten Network-Deployment- bzw. Datenformatbindungen getrennt. Damit ist eine Wiederverwendung abstrakter Definitionen möglich: Nachrichten, die abstrakte Beschreibungen der ausgetauschten Daten sind, und Porttypen, die abstrakte Operationsgruppen sind. Die konkreten Protokoll- und Datenformatspezifikationen für einen bestimmten Porttyp bilden eine wiederverwendbare Bindung. Ein Port wird definiert, indem eine Netzadresse einer wiederverwendbaren Bindung zugeordnet wird, und eine Sammlung von Ports definiert einen Service. Deshalb umfasst ein WSDL-Dokument mehrere Elemente.

Das folgende Beispiel zeigt die Struktur der Informationen in einer WSDL-Datei: Anatomie einer WSDL-Datei

Eine WSDL-Datei enthält die folgenden Abschnitte:
  • Definition der Web-Service-Schnittstelle

    Dieser Teil enthält die Elemente und die Namespaces.

  • Implementierung des Web-Service

    Dieser Teil enthält die Definition des Service und der Ports.

Eine WSDL-Datei beschreibt einen Web-Service mit den folgenden Elementen:

Porttyp

Die Beschreibung der Operationen und der zugehörigen Nachrichten. Das Element "portType" definiert abstrakte Operationen.

<portType name="EightBall">
  	<operation name="getAnswer">
    		<input message="ebs:IngetAnswerRequest"/>
    		<output message="ebs:OutgetAnswerResponse"/>
  </operation>
</portType>

message

Die Beschreibung der Eingabe- und Ausgabeparameter und Rückgabewerte.

<message name="IngetAnswerRequest">
  	<part name="meth1_inType" type="ebs:questionType"/>
</message>
<message name="OutgetAnswerResponse">
  	<part name="meth1_outType" type="ebs:answerType"/>
</message>

types

Das Schema für die Beschreibung von XML-Typen, die in den Nachrichten verwendet werden.

<types>
  	<xsd:schema targetNamespace="...">
    		<xsd:complexType name="questionType">
      			<xsd:element name="question" type="string"/>
    </xsd:complexType>
    		<xsd:complexType name="answerType">
    ...
</types>

Bindung

Die Bindungen beschreiben das Protokoll, das für den Zugriff auf einen portType verwendet werden, sowie die Datenformate für die Nachrichten, die von einem bestimmten Element "portType" definiert werden.

<binding name="EightBallBinding" type="ebs:EightBall">
  	<soap:binding style="rpc" transport="schemas.xmlsoap.org/soap/http">
  	<operation name="ebs:getAnswer">
  	<soap:operation soapAction="urn:EightBall"/>
    <input>
      			<soap:body namespace="urn:EightBall" ... />
      ...

Service

Die Services und Ports definieren die Position des Web-Service.

Der Service enthält den Namen des Web-Service und eine Liste mit Ports.

Ports

Die Ports enthalten die Position des Web-Service und die für den Servicezugriff verwendete Bindung.
<service name="EightBall">
  	<port binding="ebs:EightBallBinding" name="EightBallPort">
    		<soap:address location="localhost:8080/axis/EightBall"/>
  	</port>
</service> 

Wenn Sie Web-Services auf der Basis des Programmiermodells JAX-WS (Java™ API for XML Web Services) oder JAX-RPC (Java API for XML-based RPC) erstellen möchten, können Sie einen Bottom-up-Entwicklungsansatz mit JavaBeans oder einer Enterprise-Bean als Ausgangspunkt oder einen Top-down-Entwicklungsansatz mit einer vorhandenen WSDL-Datei (Web Services Description Language) als Ausgangspunkt wählen.

Wenn Sie JAX-WS-Web-Services für dieses Produkt erstellen, können Sie hierfür eine WSDL oder eine Implementierungs-Bean-Klasse als Ausgangspunkt verwenden. Wenn Sie eine Implementierungs-Bean-Klasse als Ausgangspunkt verwenden, müssen Sie mit dem Befehl wsgen alle Web-Service-Artefakte für die Serverseite einschließlich einer WSDL (falls erforderlich) generieren. Wenn Sie mit einer WSDL-Datei beginnen, verwenden Sie das Befehlszeilentool wsimport, um alle Web-Service-Artefakte für den Server oder den Client zu generieren.

Wenn Sie JAX-RPC-Web-Services für dieses Produkt erstellen, müssen Sie zuerst eine Implementierungs-Bean haben, die eine Serviceendpunktschnittstelle enthält. Anschließend erstellen Sie mit dem Befehlszeilentool Java2WSDL eine WSDL-Datei, die die Web-Services definiert. Wenn Sie die Implementierungs-Bean-Klasse aus der WSDL erstellen, führen Sie das Befehlszeilentool WSDL2Java für die WSDL-Datei aus, um Java-APIs und Schablonen für Implementierungsdeskriptoren zu erstellen.

Veröffentlichung von mehrteiligen WSDL-Dateien und WSDL-Dateien

Das Produkt unterstützt die Implementierung von Web-Services mit mehrteiligen WSDL-Dateien (Web Services Description Language). In mehrteiligen WSDL-Dateien enthält eine Implementierungs-WSDL das Element "wsdl:service". Die WSDL-Datei dieser Implementierung importiert die WSDL-Datei einer Schnittstelle, die die anderen WSDL-Konstrukte enthält. Auf diese Weise können mehrere Web-Services mit derselben WSDL-Schnittstellendefinition unterstützt werden.

Das Element <wsdl:import> enthält eine Referenz auf eine andere WSDL-Datei. Wenn das Attribut "location" des Elements <wsdl:import> keinen URL enthält, d. h., wenn es nur einen Dateinamen enthält und nicht mit http://, https:// oder file:// beginnt, muss sich die importierte Datei in demselben Verzeichnis befinden und darf keine Komponente des relativen Pfads enthalten. Wenn Ihr Modul beispielsweise META-INF/wsdl/A_Impl.wsdl und die Importanweisung <wsdl:import="A.wsdl" namespace="..."/> enthält, muss auch die Datei A.wsdl im Modulverzeichnis META-INF/wsdl enthalten sein.

Es wird empfohlen, alle WSDL-Dateien für EJBs (Enterprise JavaBeans) in das Verzeichnis META-INF/wsdl und für JavaBeans-Komponenten in das Verzeichnis WEB-INF/wsdl zu kopieren, selbst wenn relative Importanweisungen in den WSDL-Dateien enthalten sind. Andernfalls treten Probleme mit der WSDL-Veröffentlichung auf, wenn Sie einen Pfad wie <location="../interfaces/A_Interface.wsdl"namespace="..." /> verwenden. Wenn ein solcher Pfad verwendet wird, schlägt die Veröffentlichung fehl, weil ein relativer Pfad angegeben ist. Dabei spielt keine Rolle, ob die Datei in diesem Pfad enthalten ist oder nicht. Wenn die Position mit einer Webadresse angegeben wird, muss die Webadresse beim Serverstart und beim Starten der Implementierung lesbar sein.

Die Dateien in den Verzeichnissen META-INF/wsdl und WEB-INF/wsdl, einschließlich der WSDL- und XSD-Dateien (XML Schema Definition) können über URL-Adressen oder file veröffentlicht werden. Wenn sich die Datei, die im Element <wsdl-file> des Implementierungsdeskriptors webservices.xml referenziert wird, beispielsweise im Verzeichnis META-INF/wsdl oder WEB-INF/wsdl befindet, kann sie veröffentlicht werden. Befinden sich die von <wsdl-file> importierten Dateien im Verzeichnis wsdl/ oder in einem Unterverzeichnis, können die Dateien veröffentlicht werden.

Falls sich die im Element <wsdl-file> referenzierte WSDL-Datei in einem anderen Verzeichnis als wsdl/ oder in einem Unterverzeichnis befindet, werden die Datei und die zugehörigen importierten Dateien (WSDL- oder XSD-Dateien), die sich in demselben Verzeichnis befinden, unverändert in das Verzeichnis wsdl/ kopiert, wenn die Anwendung installiert wird. Diese Arten von Dateien können ebenfalls veröffentlicht werden.

Falls <wsdl-file> eine Datei importiert, die sich in einem anderen Verzeichnis (einem anderen Verzeichnis als -INF/wsdl oder einem Unterverzeichnis) befindet, wird die Datei nicht in das Verzeichnis wsdl kopiert und steht damit nicht für die Veröffentlichung zur Verfügung.

Für JAX-WS-Web-Services können Sie eine eine Annotation verwenden, um die WSDL-Position anzugeben. Verwenden Sie die Annotation @WebService mit dem Attribut WSDLLocation- Das Attribut WSDLLocation ist optional. Wenn das Attribut nicht angegeben wird, wird die WSDL aus den Informationen, die in den Web-Service-Klassen gefunden werden, generiert und veröffentlicht. Sie können wahlweise den Implementierungsdeskriptor webservices.xml verwenden, um die Position der WSDL-Datei anzugeben. Alle Angaben, die im Implementierungsdeskriptor webservices.xml definiert werden, überschreiben jedoch die entsprechenden Angaben, die durch Annotationen festgelegt werden.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



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