Vous êtes sur la page 1sur 41

SOA Services Web Etendus

WSDL : Dcrire et configurer


Mickal BARON 2010 (Rv. Janvier 2011) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr

Licence

Creative Commons
Contrat Paternit Partage des Conditions Initiales l'Identique
2.0 France

keulkeul.blogspot.com

http://creativecommons.org/licenses/by-sa/2.0/fr
WSDL - M. Baron - Page 2

Plan du cours

Gnralits WSDL WSDL par lexemple : HelloWorld service Organisation dun document WSDL Elment Type Elment Message Elments PortType et Operation
keulkeul.blogspot.com

Elment Binding Binding SOAP Elments Service et Port Binding HTTP GET & Post
WSDL - M. Baron - Page 3

Droulement du cours Pdagogie du cours


Des bulles daide tout au long du cours Survol des principaux concepts en vitant une prsentation exhaustive

Logiciels utiliss
Navigateur Web

Pr-requis
keulkeul.blogspot.com

Ceci est une astuce

Ingnierie des donnes Schema XML


Ceci est une alerte

Remerciements
TODO
WSDL - M. Baron - Page 4

Ressources : Liens sur le Web Articles


www.w3.org/TR/wsdl www.w3.org/TR/wsdl20/ www.w3.org/2002/ws/desc/ www.ibm.com/developerworks/library/ws-intwsdl/ oreilly.com/catalog/webservess/chapter/ch06.html www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ www.w3.org/XML/Schema www.relaxng.org/ www.ibm.com/developerworks/java/library/j-jws20
keulkeul.blogspot.com

Cours
piacoa.org/publications/teaching/webservices/WSDL.pdf www.javapassion.com/webservices/WSDLBasics.pdf www.javapassion.com/webservices/WSDLBinding.pdf www.w3schools.com/wsdl/default.asp WSDL - M. Baron - Page

Ressources : Bibliothque Services Web avec SOAP, WSDL, UDDI, ebXML


Auteur : Jean-Marie Chauvet diteur : Eyrolles Edition : Mars 2003 - 524 pages - ISBN : 2212110472

Understanding Web Services : XML, WSDL,


Auteur : Eric Newcomer diteur : Addison-Wesley Edition : Mai 2002 - 368 pages - ISBN : 0201750813
keulkeul.blogspot.com

WSDL 100 Success Secrets Essentials of


Auteur : Kevin Allen diteur : Emero Pty Ltd Edition : Juillet 2008 - 144 pages - ISBN : 1921523220
WSDL - M. Baron - Page 6

Gnralits WSDL WSDL est lacronyme de Web Service Description Language Bas sur le langage XML et permet de dcrire un service Web Fournit une description indpendante du langage et de la plate-forme Par comparaison WSDL est assez semblable au langage IDL dfini par CORBA Spcification du W3C
WSDL 1.1 : http://www.w3.org/TR/wsdl
keulkeul.blogspot.com

WSDL 2.0 : http://www.w3.org/TR/wsdl20/

A partir dun document WSDL il est possible


Gnrer un client pour appeler un Service Web Gnrer le code pour implmenter un Service Web WSDL
- M. Baron - Page 7

O trouver des documents WSDL Amazon Associates Web Service


https://affiliate-program.amazon.com http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl

Ncessite la cration dun compte pour linvocation

ebaY
http://developer.ebay.com http://developer.ebay.com/webservices/finding/latest/FindingService.wsdl

Ncessite la cration dun compte pour linvocation

National Oceanic and Atmospheric Administration


keulkeul.blogspot.com

http://www.nws.noaa.gov/xml/ http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl

WebserviceX.NET
http://www.webservicex.net http://www.webservicex.net/convertMetricWeight.asmx?wsdl http://www.webservicex.net/GenericNAICS.asmx?wsdl

WSDL - M. Baron - Page 8

O est utilis WSDL ?


Annuaire UDDI

Entreprise A interroge lannuaire UDDI pour obtenir une liste de Services Web rpondant ces exigences

2 3

1
Entreprise A tlcharge les documents qui dcrivent les Services Web (WSDL)

Entreprise B publie ses Services Web quelle implmente dans un annuaire UDDI (transmet les WSDLs)

Entreprise A envoie des messages SOAP conformes aux WSDL pour invoquer les Services Web de B

keulkeul.blogspot.com

4 5

Entreprise A Consommatrice de Services Web

Entreprise B rpond en retournant des messages SOAP conformes aux WSDL

Entreprise B Fournisseur de Services Web


WSDL - M. Baron - Page 9

Concepts dun document WSDL Une donne : information type Un message : regroupe un ensemble de donnes Une opration : action fournie par le Service Web (~ mthode au sens Java) Un type de port : ensemble daction (~ interface au sens Java) Un binding : dfinit pour un type de port le protocole utilis
keulkeul.blogspot.com

pour transmettre les informations et le format des donnes Un port : dfinit o est localis le Service Web et le binding utiliser Un service : un ensemble de ports
WSDL - M. Baron - Page 10

WSDL par lexemple : service HelloWorld Pour introduire la prsentation du langage WSDL nous dfinissons un Service HelloWorld Le service HelloWorld fournit deux oprations
Une opration makeHello qui prend en paramtre une chane de caractres et retourne une chane caractres Une opration simpleHello sans paramtre en entre et retourne une chane de caractres

keulkeul.blogspot.com

Laccs au service est ralis par lintermdiaire de messages SOAP (tudi en dtail dans le prochain cours) Le protocole utilis pour lchange des messages SOAP est HTTP Le style utilis est du RPC
WSDL - M. Baron - Page 11

WSDL par lexemple : service HelloWorld Exemple : HelloWorld service


<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <definitions name="HelloWorld" targetNamespace="http://helloworldwebservice.lisi.ensma.fr/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://helloworldwebservice.lisi.ensma.fr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types/> <message name="makeHelloWorld"> <part name="value" type="xsd:string"/> </message> <message name="makeHelloWorldResponse"> <part name="helloWorldResult" type="xsd:string"/> </message> <message name="simpleHelloWorld"/> <message name="simpleHelloWorldResponse"> <part name="helloWorldResult" type="xsd:string"/> </message> <portType name="HelloWorld"> <operation name="makeHelloWorld"> <input message="tns:makeHelloWorld"/> <output message="tns:makeHelloWorldResponse"/> </operation> <operation name="simpleHelloWorld"> <input message="tns:simpleHelloWorld"/> <output message="tns:simpleHelloWorldResponse"/> </operation> </portType>

keulkeul.blogspot.com

WSDL - M. Baron - Page 12

WSDL par lexemple : service HelloWorld Exemple (suite) : HelloWorld service


<binding name="HelloWorldPortBinding" type="tns:HelloWorld"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="makeHelloWorld"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://helloworldwebservice.lisi.ensma.fr/"/> </input> <output> <soap:body use="literal" namespace="http://helloworldwebservice.lisi.ensma.fr/"/> </output> </operation> <operation name="simpleHelloWorld"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://helloworldwebservice.lisi.ensma.fr/"/> </input> <output> <soap:body use="literal" namespace="http://helloworldwebservice.lisi.ensma.fr/"/> </output> </operation> </binding> <service name="HelloWorld"> <port name="HelloWorldPort" binding="tns:HelloWorldPortBinding"> <soap:address location="TODO"/> </port> </service> </definitions>

keulkeul.blogspot.com

WSDL - M. Baron - Page 13

Organisation dun document WSDL <definitions>


Racine dun document WSDL

<types> (optionnel et un seul autoris)


Contient la dfinition des types des donnes exprime sous forme de XML Schema

<message> (plusieurs autoriss)


Dcrit des messages transmettre (paramtre dune opration, valeur de retour, exception, )

<portType> (plusieurs autoriss)


keulkeul.blogspot.com

Dcrit un ensemble doprations o chacune 0 ou plusieurs messages en entre, 0 ou plusieurs messages de sortie ou de fautes

<binding> (plusieurs autoriss)


Spcifie une liaison entre un portType un protocole (SOAP, HTTP)

<service> (plusieurs autoriss)


Regroupe lensemble des ports (relation entre binding et URL)
WSDL - M. Baron - Page 14

Organisation dun document WSDL Un document WSDL est dcompos en deux parties Partie abstraite qui dcrit les messages et les oprations disponibles
Types (<types>) Messages (<message>) Types de port (<portType>)

Partie concrte qui dcrit le protocole utiliser et le type dencodage utiliser pour les messages
Bindings (<binding>)
keulkeul.blogspot.com

Services (<service>)

Plusieurs parties concrtes peuvent tre proposes pour la partie abstraite Motivation de cette sparation ? Rutilisabilit de la partie abstraite WSDL - M. Baron - Page 15

Organisation dun document WSDL

Operation Op1 Operation Op1 Operation Op2 Operation Op2

Deux parties concrtes sont proposes pour un mme Port Type

Partie Abstraite

Port Type 1

SOAP / HTTP SOAP / HTTP

SOAP / SMTP SOAP / SMTP

ABCBinding

DEFBinding

Des protocoles de communication diffrents


Port URL

Partie Concrte

keulkeul.blogspot.com

Port ABC URL http:// Port DEF URL http://

Port GHI URL http:// Port URL

Service 1

Service 2

Service 3

Des localisations diffrentes

WSDL Document
WSDL - M. Baron - Page 16

WSDL par lexemple : Carnet dadresse Le service Notebook fournit trois oprations
Une opration addPerson qui prend en paramtre un objet Person et retourne un boolen pour indiquer ltat de cration Une opration addPerson qui prend en paramtre trois chaines de caractres (name, address et birthyear) sans retour Une opration getPersonByName qui prend en paramtre une chane de caractre et retourne un objet Person Une opration getPersons sans paramtre en entre et qui retourne un tableau dobjets Person
keulkeul.blogspot.com

Laccs au service est ralis par lintermdiaire de messages SOAP (tudi en dtail dans le prochain cours) Le protocole utilis pour lchange des messages SOAP est HTTP et le style utilis est du RPC WSDL - M. Baron - Page 17

Elment Types Llment <types> contient la dfinition des types utiliss pour dcrire la structure des messages changs par le Web Service Le systme de typage est gnralement un Schema XSD mais dautres systmes sont autoriss (RELAX NG par exemple) Cet lment peut tre facultatif si les types utiliss par les messages sont des types de bases (Integer, Boolean, )
keulkeul.blogspot.com

Dans le cas de structures complexes (Person par exemple) un Schema XML est alors employ Un rappel sur le langage Schema XML est disponible
Le cours dEric Sardet (sardet@ensma.fr)

http://mbaron.developpez.com/divers/schemaxml

WSDL - M. Baron - Page 18

Elment Types Exemple : Dfinition des types pour Notebook service


<definitions name="Notebook" targetNamespace="http://notebookwebservice.lisi.ensma.fr/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://notebookwebservice.lisi.ensma.fr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types> <xsd:schema targetNamespace="http://notebookwebservice.lisi.ensma.fr/"> <xsd:complexType name="person"> <xsd:sequence> <xsd:element name="address" type="xs:string" minOccurs="0"/> <xsd:element name="birthyear" type="xs:string" minOccurs="0"/> <xsd:element name="name" type="xs:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="personArray" final="#all"> <xsd:sequence> <xsd:element name="item" type="tns:person" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </types> ... </definitions>

Une personne est dfinie par une adresse, une anne de naissance et un nom

keulkeul.blogspot.com

Dfinition dun type tableau de personne

WSDL - M. Baron - Page 19

Elment Types La dfinition des types peut galement tre importe partir dun fichier Schema XML Le fichier XML est accessible au mme titre que le document WSDL Ladresse de lhte du Schema XML nest pas forcment la mme que celle du document WSDL Cette sparation permet
keulkeul.blogspot.com

de rutiliser des types dans plusieurs WSDL diffrents dviter dalourdir le document WSDL

Par la suite nous privilgierons la sparation des types du document WSDL


WSDL - M. Baron - Page 20

Elment Types Exemple : Dfinition des types pour Notebook service (bis)
<definitions targetNamespace="http://notebookwebservice.lisi.ensma.fr/" name="Notebook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ...> <types> <xsd:schema> <xsd:import namespace="http://notebookwebservice.lisi.ensma.fr/" schemaLocation="Notebook_schema1.xsd"/> </xsd:schema> </types> ... </definitions>

Import le fichier XSD

keulkeul.blogspot.com

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://notebookwebservice.lisi.ensma.fr/" ...> <xs:complexType name="person"> <xs:sequence> <xs:element name="address" type="xs:string" minOccurs="0"/> <xs:element name="birthyear" type="xs:string" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="personArray" final="#all"> <xs:sequence> <xs:element name="item" type="tns:person" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xs:sequence> </xs:complexType> </xs:schema>

WSDL - M. Baron - Page 21

Elment Messages Llment <message> permet de dcrire les messages changs par les services
Paramtres dentres des oprations Paramtres de sorties Exception

Chaque <message> est identifi par un nom (attribut name) et est constitu dun ensemble dlments <part> En quelque sorte un lment <part> correspond un paramtre dune opration
keulkeul.blogspot.com

Si une opration est dcrit par plusieurs paramtres, plusieurs lments <part> seront dfinir Llment <part> est dfini par
un nom (attribut name) un type (attribut type)
WSDL - M. Baron - Page 22

Elment Messages Exemple : Dfinition des messages pour Notebook service


<definitions targetNamespace="http://notebookwebservice.lisi.ensma.fr/" name="Notebook" ...> <types> ... </types> <message name="addPersonWithComplexType"> <part name="newPerson" type="tns:person"/> </message> <message name="addPersonWithComplexTypeResponse"> <part name="addPersonWithComplexTypeResult" type="xsd:boolean"/> </message> <message name="addPersonWithSimpleType"> <part name="name" type="xsd:string"/> <part name="address" type="xsd:string"/> <part name="birthyear" type="xsd:string"/> </message> <message name="getPerson"> <part name="personName" type="xsd:string"/> </message> <message name="getPersonResponse"> <part name="getPersonResult" type="tns:person"/> </message> <message name="getPersons"/> <message name="getPersonsResponse"> <part name="getPersonsResult" type="tns:personArray"/> </message> </definitions>

Message utilis pour lappel dune opration avec une seule partie Message utilis pour le rsultat dune opration avec une seule partie Message utilis pour lappel dune opration avec trois parties

keulkeul.blogspot.com

Une partie qui pointe sur un type dfini par llment <types>

WSDL - M. Baron - Page 23

Elment portType et sous lment Operation Un lment <portType> est un regroupement doprations et peut compar une interface Java Caractristique dun lment <portType>
Identifiable par un nom (attribut name) Compos de sous lment <operation>

keulkeul.blogspot.com

Une opration est comparable une mthode Java


Identifiable par un nom (attribut name) La description des paramtres est obtenue par une liste de messages
WSDL - M. Baron - Page 24

Elment portType et sous lment Operation Une opration exploite les messages via les sous lments
<input> : message transmis au service <output> : message produit par le service <fault> : message derreur (trs proche des exceptions)

Chaque sous lment possde les attributs suivants


name : nom explicite donn au message (optionnel)
keulkeul.blogspot.com

message : rfrence un message (dfini prcdemment)

La surcharge dopration est autorise sous condition


Messages <input> et/ou <ouput> soient diffrents
WSDL - M. Baron - Page 25

Elment portType et sous lment Operation Exemple : Dfinition des Ports pour Notebook service
<definitions targetNamespace="http://notebookwebservice.lisi.ensma.fr/" name="Notebook" ...> <types> ... </types> <message> ... </message> <portType name="Notebook"> <operation name="addPerson"> <input message="tns:addPersonWithComplexType"/> <output message="tns:addPersonWithComplexTypeResponse"/> </operation> <operation name="addPerson" parameterOrder="name address birthyear"> <input message="tns:addPersonWithSimpleType"/> </operation> <operation name="getPerson"> <input message="tns:getPerson"/> <output message="tns:getPersonResponse"/> </operation> <operation name="getPersons"> <input message="tns:getPersons"/> <output message="tns:getPersonsResponse"/> </operation> </portType> </definitions>

Lopration addPerson est surcharge

Possibilit de fixer lordre des paramtres dfinis par cette opration

keulkeul.blogspot.com

WSDL - M. Baron - Page 26

Elment portType et sous lment Operation Possibilit de dfinir une opration suivant quatre modles One-way : envoie de messages
Le client du service envoie un message lopration et nattend pas de rponse Uniquement un seul message utilis <input>
<operation name="addPerson" parameterOrder="name address birthyear"> <input message="tns:addPersonWithSimpleType"/> </operation>

Request/Response : question rponse


keulkeul.blogspot.com

Le client du service envoie un message lopration et un message est retourne au client Un message <input>, un message <output> et un message <fault>
<operation name="addPerson"> <input message="tns:addPersonWithComplexType"/> <output message="tns:addPersonWithComplexTypeResponse"/> </operation>

WSDL - M. Baron - Page 27

Elment portType et sous lment Operation Notification : notification


Le service envoie un message au client Uniquement un seul message utilis <output>
<operation name="personStatus"> <output message="trackingInformation"/> </operation>

Solicit - response : sollicitation - rponse


Le client reoit un message du service et rpond au service Un message <ouput>, un message <input> et un message <fault>
keulkeul.blogspot.com
<operation name="clientQuery"> <output message="bandWithRequest"/> <input message="bandwidthInfo" /> <fault message="faultMessasge" /> </operation>

WSDL - M. Baron - Page 28

Elment Binding Un lment <binding> permet de raliser la partie concrte dun lment <portType>
un nom (attribut name) un portType (attribut type)

Il dcrit prcisment le protocole utiliser pour manipuler un lment <portType>


SOAP 1.1 et 1.2 HTTP GET & Post (pour le transfert dimages par exemple) MIME
keulkeul.blogspot.com

Plusieurs lments <binding> peuvent tre dfinis de sorte quun lment portType peut tre appel de diffrentes manires La structure de llment <binding> dpend du protocole utilis WSDL - M. Baron - Page
29

Elment Binding Structure gnrale de llment <binding> sans prcision sur le protocole employ
<definitions> Ces informations sont ... <binding name="NamePortBinding" type="tns:portType"> spcifiques au protocole <!-- Dcrit le protocole utiliser --> utilis <operation name="operation1"> <!-- Action du protocole sur lopration --> <input> <!-- Action du protocole sur les messages dentrs (input) --> </input> <output> <!-- Action du protocole sur les messages de sorties (ouput) --> </output> <fault> <!-- Action du protocole sur les messages derreurs (fault) --> </fault> </operation> </binding> ... </definitions>

keulkeul.blogspot.com

Le schema XML de WSDL ne dcrit pas les sous lments de binding, operation, input, ouput et fault Ces lments sont spcifiques aux protocoles utiliss
WSDL - M. Baron - Page 30

Binding SOAP Le binding SOAP est dfini par lespace de noms suivant
http://schemas.xmlsoap.org/wsdl/soap/
Prfixe utilis est gnralement soap (de la forme <soap:binding>)

Diffrentes versions peuvent tre utilises : 1.1 et 1.2 (dans la suite nous utiliserons la version 1.1) Les principales balises exploiter dans le binding sont
<soap:binding> <soap:operation>
keulkeul.blogspot.com

<soap:body>, <soap:header>, <soap:headerfault> <soap:fault>

A noter que nous dtaillerons certains aspects dans le cours consacr au protocole SOAP WSDL - M. Baron - Page 31

Binding SOAP Exemple : Dfinition dun Binding SOAP 1.1


<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding name="NoteBookPortBinding" type="tns:Notebook"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="addPersonWithComplexType"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://notebookwebservice.lisi.ensma.fr/"/> </input> <output> <soap:body use="literal" namespace="http://notebookwebservice.lisi.ensma.fr/"/> </output> </operation> <operation name="addPersonWithSimpleType"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://notebookwebservice.lisi.ensma.fr/"/> </input> </operation> <operation name="getPerson"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://notebookwebservice.lisi.ensma.fr/"/> </input> <output> <soap:body use="literal" namespace="http://notebookwebservice.lisi.ensma.fr/"/> </output> </operation> ... </binding> </definitions>

Elments spcifiques au protocole SOAP 1.1

keulkeul.blogspot.com

WSDL - M. Baron - Page 32

Binding SOAP : Elment soap:binding Llment <soap:binding> doit tre prsent lors de la dfinition dun binding base de messages SOAP
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <soap:binding transport="uri"? style="rpc|document"/> </binding> </definitions>

Lattribut style permet dindiquer la faon dont sont crs les messages SOAP pour lensemble des oprations
rpc : encodage dfini par SOAP RPC document : encodage sous forme dlment XML
keulkeul.blogspot.com

Lattribut transport permet de prciser le protocole utiliser pour le transport des messages SOAP
HTTP : http://schemas.xmlsoap.org/soap/http SMTP : FTP,
WSDL - M. Baron - Page 33

Binding SOAP : Elment soap:operation Llment <soap:operation> doit tre prsent pour chaque opration dfinie dans la partie abstraite du document
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <operation ...> <soap:operation soapAction="uri"? style="rpc|document"?>? </operation> </binding> </definitions>

Lattribut soapAction permet de prciser la valeur de


keulkeul.blogspot.com

len-tte HTTP (dans notre cas la valeur sera vide) Lattribut style permet de prciser la faon dont sont crs le messages SOAP de lopration en question (RPC ou document)
WSDL - M. Baron - Page 34

Binding SOAP : Elment soap:body Llment <soap:body> prcise le format des messages changs par une opration Il y a autant dlment <soap:body> quil y a de messages dfinis par une opration (<input>, <ouput> et <fault>)
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <operation ...> <input> <soap:body parts="nmtokens"? use="literal|encoded"? encodingStyle="uri-list"? namespace="uri"?> </input> <output> <soap:body parts="nmtokens"? use="literal|encoded"? encodingStyle="uri-list"? namespace="uri"?> </output> </operation> </binding> </definitions>

keulkeul.blogspot.com

Lattribut use caractrise la forme des parties des messages


encoded : transformation suivant un mcanisme dfini par lattribut encodingStyle litteral : pas de transformation des parties des messages, elles
apparaissent directement
WSDL - M. Baron - Page 35

Binding SOAP : debriefing Beaucoup de chose trs abstraites qui seront illustres dans le support de cours sur SOAP Rapide mise au point
Le style document est largement utilis par la plateforme .NET Le choix entre RPC et Document na pas dimportance puisque le rsultat peut tre identique (historique du standard SOAP) Lutilisation de la valeur encoded (forme des parties des messages)
keulkeul.blogspot.com

nest pratiquement plus supporte par les botes outils Web Services Le protocole HTTP est massivement utilis pour le transport des messages SOAP
WSDL - M. Baron - Page 36

Elment Service et Port Un lment service dfinit lensemble des points dentre du Service Web, en regroupant des lments <port> Llment <port> permet de spcifier une adresse pour un binding donn Un port est dfini par deux attributs
name : nom du port binding : nom du binding (dfini prcdemment)

Le corps de llment <port> est spcifique au protocole utilis pour dfinir le binding
keulkeul.blogspot.com

Dans le cas dun binding de type SOAP, un lment <soap:address> prcise lURI du port Il est par consquent possible dappeler un service des endroits diffrents (plusieurs lments port ) WSDL - M. Baron - Page

37

Elment Service et Port Exemple : Dfinition dun service

<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> </binding> <service name="Notebook"> <port name="NoteBookPort" binding="tns:NoteBookPortBinding"> <soap:address location="http://localhost:8080/NotebookWebService/notebook"/> </port> </service> </definitions>

keulkeul.blogspot.com

Le Port Type Notebook est accessible en SOAP/HTTP via cette URL

WSDL - M. Baron - Page 38

Autre chose que du SOAP comme transport Exemple : WSDL qui retourne un GIF ou JPG
<definitions .... > <message name="m1"> <part name="part1" <part name="part2" <part name="part3" </message> <message name="m2"> <part name="image" </message> type="xsd:string"/> type="xsd:int"/> type="xsd:string"/>

type="xsd:binary"/>

<portType name="pt1"> <operation name="o1"> <input message="tns:m1"/> <output message="tns:m2"/> </operation> </portType> <service name="service1"> <port name="port1" binding="tns:b1"> <http:address location="http://example.com/"/> </port> <port name="port2" binding="tns:b2"> <http:address location="http://example.com/"/> </port> <port name="port3" binding="tns:b3"> <http:address location="http://example.com/"/> </port> </service>

keulkeul.blogspot.com

Exemple situ sur

http://www.w3.org/TR/wsdl#_http-e

WSDL - M. Baron - Page 39

Autre chose que du SOAP comme transport Exemple (suite) : WSDL qui retourne un GIF ou JPG
<binding name="b1" type="pt1"> <http:binding verb="GET"/> <operation name="o1"> <http:operation location="o1/A(part1)B(part2)/(part3)"/> <input><http:urlReplacement/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> <binding name="b2" type="pt1"> <http:binding verb="GET"/> <operation name="o1"> <http:operation location="o1"/> <input><http:urlEncoded/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> <binding name="b3" type="pt1"> <http:binding verb="POST"/> <operation name="o1"> <http:operation location="o1"/> <input><mime:content type="application/x-www-form-urlencoded"/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> </definitions>

Exemple situ sur

http://www.w3.org/TR/wsdl#_http-e

keulkeul.blogspot.com

WSDL - M. Baron - Page 40

Outils Des outils pour construire un document WSDL


Notepad++ (diteur de texte puisquil sagit dXML) Eclipse JavaEE Netbeans Visual Studio (tous les environnements de dveloppement qui manipulent les Services Web)
keulkeul.blogspot.com

Des outils pour valider un document WDSL


www.validwsdl.com

Des outils pour manipuler un WSDL


SOAPUI
WSDL - M. Baron - Page 41