Java ruft WebService an. Wenn Sie sich zum ersten Mal in Verbindung setzen, werden Sie denken, dass es sich um einen Albtraum handelt, insbesondere ohne einheitliche Standardimplementierung. Im Vergleich zur Webservice -Implementierung, die in wenigen Schritten von .NET abgeschlossen werden kann, ist es wirklich traurig, die Implementierung von Java zu sehen. Aber selbst wenn wir traurig sind, müssen wir es noch vervollständigen. Java hat auch viele gute Implementierungen wie Xfire, Jersey, CXF. Hier werden wir uns die Implementierung von XFire zusammen ansehen.
1) Zunächst muss ich natürlich aus der Tasche steigen, und diese gewöhnliche Person weiß es. http://xfire.codeehaus.org/download Sie können hier gehen, Sie können alle oder verteilt gehen. Aber es ist besser, ihm eine Menge seltsamer Probleme zu geben, um Selbstvertrauen zu verlieren.
Was soll ich tun, wenn ich die Tasche auslegt? Setzen Sie es in das Projekt ein. Es scheint Unsinn, aber viele Menschen wissen einfach nicht, was sie tun sollen.
Um ein neues Projekt aufzubauen, vergleiche ich es mit Xfirewebservice, das hier natürlich ein Webprojekt ist.
Ich habe alle Pakete hier eingestellt. Wenn wir Beispiele schreiben, müssen doch nicht wählerisch sein. Klicken Sie beiläufig darauf. Wenn Sie die Ausnahmeinformationen sehen möchten, können Sie sie langsam hinzufügen. In Zukunft ist es leicht, Fehler zu beseitigen, aber wir werden das hier nicht tun. Schließlich ist nichts Hässliches an dem Fehlen jeglicher Art von Ausnahmen, und Sie können sie selbst beseitigen.
2) Lassen Sie uns zunächst den Unterschied zwischen XFire und anderen WebService -Frameworks verstehen. Der größte Unterschied besteht darin, dass eine Schnittstelle erforderlich ist. Wenn Sie XFire verwenden müssen, um den entsprechenden Webservice aufzurufen, müssen Sie die Definition der Schnittstelle kennen. Ich habe das Gefühl, dass es hier ein bisschen Einschränkung gibt. Aber abgesehen davon ist es ziemlich bequem, WebService anzurufen, genau wie lokale Methoden. Schauen wir uns das Beispiel direkt an:
Zunächst die wichtigste Schnittstelle:
public interface ireaderService {public reader getReader (String -Name, String -Passwort); öffentliche Liste <Leader> getReaders (); } Es gibt eine Schnittstelle, natürlich muss es eine Implementierungsklasse geben, andernfalls hat die Schnittstelle keine Bedeutung. public class readerService implementiert ireaderService {public reader getReader (String -Name, String -Passwort) {neuer Leser zurückgeben (Name, Passwort); } publiclist <Leader> getReaders () {list <reader> readerlist = new ArrayList <Leser> (); ReaderList.Add (neuer Leser ("Shun1", "123"); ReaderList.add (neuer Leser ("Shun2", "123"); return readerlist; }} Schauen Sie sich auch JavaBean- und Leserkurse an:
public Class Reader {private statische endgültige lange Serialversionuid = 1L; privater Zeichenfolge Name; privates Zeichenfolgenkennwort; public reader () {} public reader (String -Name, String -Passwort) {this.name = name; this.Password = Passwort; } // GET/SET -Methode weggelassen public String toString () {return "Name:"+name+", Passwort:"+Passwort; }}Beachten Sie, dass unsere Leserklasse hier die serialisierbare Schnittstelle implementiert, warum? Zuallererst müssen wir das Prinzip des Webservice verstehen. Wenn wir für Java Objekte im Internet hochladen müssen, werden viele Menschen natürlich an Serialisierung denken. Dies ist übrigens eine Serialisierung, da wir den Leser als Parameter übergeben müssen. Dies muss gewaltsam in der vorherigen Version implementiert werden, andernfalls wird ein Fehler gemeldet. Die neueste Version (in der Tat ist die neueste von 2007, da XFire die Entwicklung eingestellt hat und von Apache in ein CXF -Projekt zusammengeführt wurde. Wir werden später darüber sprechen) nicht mehr. Wie es implementiert wird, werden wir es vorerst nicht ausführlich untersuchen, da es in CXF zusammengeführt wurde. Wenn wir ausführlich lernen wollen, sollte es besser sein, CXF zu lernen.
3) Nachdem wir die oben genannte Oberfläche und das Javabäe -Schreiben abgeschlossen haben, werden viele Leute fragen, dass viele Webservices WSDL -Dateien haben werden. Wie haben Sie sie also bekommen? Bevor wir darüber sprechen, diskutieren wir, was WSDL ist. Vielleicht bieten viele Unternehmen Schnittstellen an, die nur HTTP -Adressen sind und XML -Formate zurückgeben, ebenso wie unsere auch. Dies hat einen Vorteil und einen Nachteil. Der Vorteil ist, dass unsere Entwicklung weniger schwierig ist, während der Nachteil darin besteht, dass wir den Benutzern eine Reihe von Erklärungsdateien zur Verfügung stellen müssen. Was bedeutet jeder zurückgegebene XML -Tag? Das ist nichts, aber es ist nur nervig. Was WebService betrifft, so ist der Nachteil, dass wir ein wenig mehr Dinge entwickelt haben, und der Vorteil besteht darin, dass wir nicht so viele Erläuterungsdateien schreiben müssen, da eine einheitliche Erklärung namens WSDL besteht. Dies ist das Erklärungsdokument von WebService, das einheitlich und dasselbe ist, unabhängig von der Sprache. Es gibt also kein Problem, das niemand verstehen kann.
Und hier, wenn wir XFire bereitstellen, kann es uns helfen, WSDL -Dateien zu generieren.
Das Problem ist, wie man es bereitstellt, dies ist tatsächlich einfach. Wir erstellen im SRC-Verzeichnis einen neuen Ordner-Meta-Inf und erstellen dann einen Ordner XFire und erstellen die Dateidienste.xml. Die nachfolgende Struktur lautet wie folgt:
Einige Leute fragen sich möglicherweise, warum wir es in das SRC -Verzeichnis aufbauen müssen. Tatsächlich ist es hier kein vorgeschriebener Build, sondern weil wir die Entwicklungstools bitten müssen, um uns dabei zu helfen, diese Dateien selbst bereitzustellen. Wenn wir sie also hier einsetzen, kann Eclipse uns dabei helfen, sie für Tomcat oder andere Container selbst bereitzustellen. Beachten Sie, dass die Ordnerebene, in der sich diese Datei befindet, festgelegt ist und nicht geändert werden kann.
Werfen wir einen Blick auf dienste.xml direkt:
<? -> <Namespace> http: // test/helloService </namespace> <!-Schnittstellenklasse-> <serviceClass> com.xfire.servlet.ireaderService </serviceClass> <!-Implementierungsklasse-> </Implementationclass> com.xfire.servlet.ReaderService </ImplementationClasse> </boans.servlet.ReaderService </Implementationclasse> </boans.servlet.ReaderService </implementierung> </boans.
Es ist im Allgemeinen in Ordnung, die Kommentare zu betrachten.
4) Viele Leute denken, dass dies genug ist. Nein, es hat noch nicht funktioniert. Wenn Sie dies angeben, wie können andere es besuchen? So leiten Sie die entsprechende Anfrage an Xfire weiter und lassen Sie sie verarbeiten. Wir müssen die web.xml erneut ändern.
Nach der Änderung lautet Folgendes:
<? xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" XSI: Schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapplet" Version ". <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
Tatsächlich fügt es nur ein Servlet und die entsprechende Zuordnung hinzu. Als nächstes geben wir es direkt in den Browser ein:
http: // localhost: 8080/xfirewebservice/dienste/readerService? WSDL
Wir können sehen:
Was hier angezeigt wird, ist WSDL, wodurch die von uns definierte Methode und der zurückgegebene Typ angezeigt werden. Es gibt eine Erklärung von WSDL später.
5) Nach Abschluss der oben genannten vier Schritte haben wir die Bereitstellung des Webservice abgeschlossen. Andere können den entsprechenden Webservice anrufen, um auf unsere Methoden zuzugreifen. Verwenden wir den von XFire bereitgestellten Kunden, um auf den gerade veröffentlichten Website -Service zuzugreifen:
public class readerclient {public static void main (String [] args) {// Hier wird ein Dienst erstellt, und eine Schnittstellenklasse muss übergeben werden, da wir den entsprechenden Schnittstellenmethodendienst srcmodel = new ObjectServiceFactory () aufrufen müssen (Ireaderservice.class); // Agent Factory, hier soll die entsprechende Schnittstellenklasse später xfireproxyfactory factory = new xfireproxyfactory (xfireFactory.Newinstance (). GetXfire ()) erstellen; // WebService -Adresse, kein WSDL muss String readerServiceurl = "http: // localhost: 8080/xfirewebservice/dienste/readerService" hinzugefügt werden; Versuchen Sie es mit der Fabrik, um die entsprechende Schnittstellenklasse IreaderService ReaderService = (iReaderService) Fabrik (SrcModel, ReaderServiceurl) zurückzugeben. Reader reader = readerService.getReader ("Shun", "123"); System.out.println (Leser); } catch (fehl Formaledurlexception e) {e.printstacktrace (); }}} Auf diese Weise sehen wir, dass die Ausgabe lautet:
Analyse der WSDL -Dateistruktur
WSDL (Web Services Beschreibung Sprache, Webdienst Beschreibung Sprache) ist eine XML -Anwendung, die eine Beschreibung des Webdienstes als Reihe von Dienstzugriffspunkten definiert, über die Clients auf Dienste zugreifen können, die Informationen oder Verfahrensanrufe enthalten (ähnlich wie bei Remote -Prozeduranrufen). WSDL ist zuerst den Zugriffsvorgang und die während des Zugriffs verwendete Anforderungs-/Antwortnachricht abstrahiert und bindet sie dann an ein bestimmtes Transportprotokoll und ein Meldungsformat, um letztendlich den spezifischen bereitgestellten Service -Zugriffspunkt zu definieren. Die Dienstzugriffspunkte für zugehörige spezifische Bereitstellungen werden durch Kombination zu abstrakten Webdiensten. In diesem Artikel wird die Struktur des WSDL -Dokuments im Detail erläutert und die Rolle jedes Elements analysiert.
1: WSDL -Definition
WSDL ist ein Dokument, mit dem Webdienste genau beschrieben werden, und ein WSDL -Dokument ist ein XML -Dokument, das dem WSDL -XML -Muster folgt. Das WSDL -Dokument definiert einen Webdienst als Sammlung von Service -Zugangspunkten oder -Ports. In WSDL kann die abstrakte Definition erneut verwendet werden, da die abstrakte Definition von Dienstzugriffspunkten und -nachrichten von der spezifischen Dienstbereitstellung oder der Datenformatbindung getrennt wurde: Die Nachricht bezieht sich auf eine abstrakte Beschreibung der ausgetauschten Daten; und der Port -Typ bezieht sich auf eine abstrakte Sammlung von Operationen. Spezifische Protokolle und Datenformatspezifikationen für bestimmte Portypen stellen eine Bindung dar, die wiederverwendet werden kann. Eine Webzugriffsadresse mit einer wiederverwendbaren Bindung, ein Port kann definiert werden, und eine Sammlung von Ports wird als Dienst definiert.
Ein WSDL -Dokument enthält normalerweise 7 wichtige Elemente, nämlich Typen, Import-, Nachrichten-, Porttyp-, Betriebs-, Bindungs- und Service -Elemente. Diese Elemente sind im Definitionselement verschachtelt, das das Wurzelelement des WSDL -Dokuments ist. Der nächste Teil des Artikels wird die Grundstruktur von WSDL im Detail einführen.
2: Grundstruktur von WSDL-Overview
Wie am Ende des ersten Teils beschrieben, enthält ein grundlegendes WSDL -Dokument 7 wichtige Elemente. Das Folgende wird diese Elemente und ihre Funktionen einführen.
Das WSDL -Dokument verwendet die folgenden Elemente in der Definition eines Webdienstes:
・ Typen - Ein durch einen Datentyp definierter Container, der ein bestimmtes Typsystem verwendet (normalerweise das Typsystem im XML -Schema).
・ Nachricht - Abstrakte Typdefinition von Datenstrukturen für Kommunikationsnachrichten. Verwenden Sie die nach Typen definierten Typen, um die Datenstruktur der gesamten Nachricht zu definieren.
・ Betrieb - Eine abstrakte Beschreibung der im Dienst unterstützten Operationen. Im Allgemeinen beschreibt eine einzelne Operation ein Anforderungs-/Antwortmeldungspaar, das auf den Eintrag zugreift.
・ PortType - Eine abstrakte Sammlung von Operationen, die von einem bestimmten Zugriffstyp unterstützt werden, der von einem oder mehreren Dienstzugriffspunkten unterstützt werden kann.
・ Bindung - Bindung spezifischer Protokolle und Datenformatspezifikationen für bestimmte Porttypen.
・ Port - definiert als ein einzelner Dienstzugriffspunkt, der die Protokoll-/Datenformatbindung mit spezifischen Webzugriffsadressen kombiniert.
・ Service- Eine Sammlung verwandter Dienstzugriffspunkte.
Das XML -Schema von WSDL kann als folgende URL bezeichnet werden: http://schemas.xmlsoap.org/wsdl/
Drei: Grundstruktur der WSDL-detaillierten Beschreibung
In diesem Abschnitt wird die Rolle jedes Elements des WSDL -Dokuments in einem Beispiel ausführlich beschrieben. Das folgende Beispiel ist der Inhalt eines einfachen WSDL -Dokuments. Für die Erzeugung dieses Dokuments finden Sie in meinem anderen Artikel: Xfire Development Beispiel-Helloworld.
Ein einfaches WSDL -Dokument des Webdienstes, das eine eindeutige Operation namens Sayhello unterstützt, die durch Ausführen des SOAP -Protokolls auf HTTP implementiert wird. Die Anfrage akzeptiert einen Zeichenfolgennamen und gibt nach der Verarbeitung eine einfache Zeichenfolge zurück. Die Dokumentation lautet wie folgt:
<? xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: soap12 = "http://www.w3.org/2003/05/soap-envelope" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: soapenc11 = "http://schemas.xmlsoap.org/soap/encoding/" xmlns: soapenc12 = "http://www.w3.org/2003/05/soap-coding" xmlns: soap11 = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://com.liuxiang.xfireDemo/HelloService"> <xsd:element name="sayHello"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" nillable="true" type="xsd:string" /> </xsd: Sequenz> </xsd: complexType> </xsd: element> <xsd: elementname = "SayHelloresponse"> <xsd: complexType> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = "out" nillable = "echte" type "type" type = "type: </xsd: complexType> </xsd: element> </xsd: schema> </wsdl: Typen> <wsdl: message name = "sayHelloresponse"> <wsdl: part name = "parameter" element = "tns: SayhelloreResponse"/> </wsdl: messus> <wsdl: Message> <wsdl: messdl: Message> <wsdl: messdl: messdl: messdl: messdl: messus> </<wsdl: messus: message = " <wsdl: part name = "parameter" element = "tns: SayHello" /> < /wsdl: message> <wsdl: portType name = " name = "sayHelloresponse" message = "tns: sayHelloresponse"/> </wsdl: operation> </wsdl: portType> <wsdl: bindend name = "helloServiceHttpBinding transport = "http://schemas.xmlsoap.org/soap/http"/> <wsdlsoap: operation name = " <wsdlSoap: Body Use = "buchstäblich"/> </wsdl: output> </wsdl: operation> </wsdl: bindung> <wsdl: service name = "helloService"> <wsdl: port name = "helloServiceHttpport" binding = "tns: helloServiceHtpbinding"> <wsdlsoap: add. location = "http: // localhost: 8080/xfire/dienste/helloService"/> </wsdl: port> </wsdl: service> </wsdl: Definitionen>
Das Type -Element verwendet die XML -Schema -Sprache, um komplexe Datentypen und Elemente zu deklarieren, die an anderer Stelle im WSDL -Dokument verwendet werden.
Das Importelement ähnelt dem Importelement in einem XML -Schema -Dokument und wird verwendet, um WSDL -Definitionen aus anderen WSDL -Dokumenten zu importieren.
Das Nachrichtenelement beschreibt die Nutzlast einer Nachricht mit dem integrierten Typ, dem komplexen Typ oder dem Element des XML-Schemas, das im Typelement des WSDL-Dokuments definiert oder im externen WSDL-Dokument definiert ist, auf das das Importelement verwiesen wird.
Das PortType -Element und das Betriebselement beschreiben die Schnittstelle des Webdienstes und definieren seine Methoden. Das PortType -Element und das Betriebselement ähneln der in der Java -Schnittstelle definierten Methodenerklärung. Das Betriebselement verwendet einen oder mehrere Nachrichtentypen, um die Nutzlast seiner Eingabe und Ausgabe zu definieren.
Das Bindungselement weist dem PortType -Element und dem Betriebselement einem speziellen Protokoll- und Codierungsstil zu.
Das Service -Element ist für die Zuweisung der Internetadresse einer bestimmten Bindung verantwortlich.
1. Definitionen Elemente
Das Stammelement aller WSDL -Dokumente ist ein Definitionenelement. Dieses Element fasst das gesamte Dokument zusammen und bietet ein WSDL -Dokument über seinen Namen. Dieses Element hat keine andere Funktion, als einen Namespace bereitzustellen, sodass es nicht ausführlich beschrieben wird.
Der folgende Code ist die Struktur eines Definitionselements:
<WSDL: Definitionen targetnamespace = "http: //com.liuxiang.xfiredemo/helloService" xmlns: tns = "http: //com.liuxiang.xfiredemo/helloService" xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: soap12 = "http://www.w3.org/2003/05/soap-envelope" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: soapenc11 = "http://schemas.xmlsoap.org/soap/encoding/" xmlns: soapenc12 = "http://www.w3.org/2003/05/soap-coding" xmlns: soap11 = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/"> </wsdl: Definitionen>
2. Typelemente
WSDL übernimmt die integrierten W3C XML-Schema als Grundtypsystem. Das Typ-Element wird als Container verwendet, um verschiedene Datentypen zu definieren, die nicht in den in den XML-Schema eingebauten Typen beschrieben sind. Bei der Erklärung der Nutzlast des Nachrichtenteils verwendet die Nachrichtendefinition die im Typelement definierten Datentypen und Elemente. Typen Definitionen in diesem WSDL -Dokument:
<wsd:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://com.liuxiang.xfireDemo/HelloService"> <xsd:element name="sayHello"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" nillable="true" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sayHelloResponse"> <xsd: complexType> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = "out" nillable = "true" type = "xsd: string"/> </xsd: sequence> </xsd: complexType> </xsd: element> </xsd: schema
Das obige ist der Teil der Datendefinition, der zwei Elemente definiert, eines ist Sayhello und der andere ist Sayhelloresponse:
SayShello: Definiert einen komplexen Typ, der nur eine einfache Zeichenfolge enthält, mit der der eingehende Teil der Operation in Zukunft beschrieben wird.
SayShelloreResponse: Definiert einen komplexen Typ, der nur eine einfache Zeichenfolge enthält, und den Rückgabewert, der zur Beschreibung der Operation in Zukunft verwendet wird.
3.. Elemente importieren
Das Importelement ermöglicht die Verwendung der Definitionselemente im Namenspace, die in anderen WSDL -Dokumenten im aktuellen WSDL -Dokument angegeben sind. Das Importelement wird in diesem Beispiel nicht verwendet. Diese Funktion ist normalerweise sehr effektiv, wenn Benutzer WSDL -Dokumente modularisieren möchten.
Das Format des Imports lautet wie folgt:
<WSDL: Namespace = "http://xxx.xxx.xxx/xxx/xxx" location = "http://xxx.xxx.xxx/xxx/xxx.wsdl"/>
Es muss ein Namespace -Attribut und ein Speicherattribut geben:
Namespace -Attribut: Der Wert muss mit dem im importierenden WSDL -Dokument mit dem im importierenden WSDL -Dokument übereinstimmen.
Standortattribut: Muss auf ein tatsächliches WSDL -Dokument verweisen, und das Dokument kann nicht leer sein.
4. Nachrichtenelemente
Das Nachrichtenelement beschreibt die Nutzlast eines Webdienstes mithilfe von Nachrichten. Das Nachrichtenelement kann die Nutzlast der Ausgabe oder der Annahme von Nachricht beschreiben. Es kann auch den Inhalt des SOAP -Dateiheaders und das Fehlerdetailelement beschreiben. Die Art und Weise, wie das Nachrichtenelement definiert ist, hängt von der Verwendung von RPC -Stil- oder Dokumentenstil -Messaging ab. In der Definition des Nachrichtenelements in diesem Artikel verwendet dieses Dokument Messaging im Dokumentstil:
<wsdl: message name = "
Dieser Teil ist eine abstrakte Definition des Nachrichtenformates: Zwei Nachrichten Sayhelloresponse und Sayhellorequest werden definiert:
SayShellorequest: Das Anforderungsnachrichtenformat der Sayhello -Operation, die aus einem Nachrichtenfragment, dem benannten Parametern, und dem Element das Element in dem zuvor definierten Typ;
SayShelloresponse: Das Antwortmeldungsformat der Sayhello -Operation besteht aus einem Nachrichtenfragment mit dem Namen Parameter, und das Element ist das Element in den zuvor definierten Typen.
Wenn Sie Messaging im RPC-Stil verwenden, müssen Sie das Elementelement im Dokument nur zum Eingeben ändern.
5. Porttype -Element
Das PortType -Element definiert die abstrakte Schnittstelle des Webdienstes. Diese Schnittstelle ähnelt Java -Schnittstellen, die beide einen abstrakten Typ und eine abstrakte Methode definieren, und es wird keine Implementierung definiert. In WSDL wird das PortType -Element durch Bindungs- und Servicelemente implementiert, mit denen das Internet -Protokoll, das Codierungsschema und die Internetadresse, die von der Web -Service -Implementierung verwendet wird, veranschaulicht.
Mehrere Vorgänge können in einem Portyp definiert werden, und ein Vorgang kann als Methode angesehen werden. Die Definition des WSDL -Dokuments in diesem Artikel:
<wsdl: portType name = " </wsdl: portType>
PortType definiert den Callmodus des Dienstes. Es enthält eine Operation SayShello -Methode, die sowohl Eingang als auch Ausgabe enthält, um anzuzeigen, dass der Vorgang ein Anforderungs-/Antwortmodus ist. Die Anforderungsnachricht ist die zuvor definierte Sayhellorequest, und die Antwortnachricht ist die zuvor definierte Sayhelloresponse. Die Eingabe repräsentiert die für den Webdienst gelieferte Nutzlast, und die Ausgabemeldung stellt die an den Client gelieferte Nutzlast dar.
6. Bindung
Das Bindungselement ordnet ein abstraktes Portype auf einen Satz spezifischer Protokolle (SOAO und HTTP), Messaging -Stile und Codierungsstile ab. Normalerweise werden Bindungselemente zusammen mit den proprietären Elementen des Protokolls verwendet. Beispiele in diesem Artikel:
<WSDL: Bindungsname = " SOAPACTION = "" /> <WSDL: Eingabenname = "