You are on page 1of 26

SOA Services Web Etendus

SOAP : Communiquer
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
SOAP - M. Baron - Page 2

Plan du cours

Gnralits SOAP SOAP par lexemple : HelloWorld service Structure dun message SOAP En tte dun message SOAP (header) Corps dun message SOAP (body)
keulkeul.blogspot.com

SOAP et le transport HTTP Outil SOAP UI


SOAP - 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, SOAP UI
Ceci est une astuce
keulkeul.blogspot.com

Pr-requis
Ingnierie des donnes, Schema XML, WSDL
Ceci est une alerte

Remerciements
TODO
SOAP - M. Baron - Page 4

Ressources Articles
www.w3.org/TR/soap/ www.ibm.com/developerworks/xml/library/x-soapbx2/index.html www.soapui.org fr.wikipedia.org/wiki/SOAP

Cours
keulkeul.blogspot.com

www.w3schools.com/soap apiacoa.org/publications/teaching/webservices/SOAP.pdf www.javapassion.com/webservices/SOAPBasics.pdf mbaron.developpez.com/divers/schemaxml/


SOAP - M. Baron - Page 5

Ressources : Bibliothque Programming Web Services with SOAP


Auteur : James Snell, Doug Tidwell, Pavel Kulchenko diteur : OReilly Edition : Dc. 2001 - 264 pages - ISBN : 0596000952

Java and SOAP


Auteur : Robert Englander diteur : OReilly Edition : Mai 2002 - 288 pages - ISBN : 0596001754
keulkeul.blogspot.com

Understanding Web Services : , SOAP,


Auteur : Eric Newcomer diteur : Addison-Wesley Edition : Mai 2002 - 368 pages - ISBN : 0201750813
SOAP - M. Baron - Page 6

Gnralits SOAP SOAP est un protocole de communication entre application bas sur le langage XML Initialement SOAP dsignait lacronyme de Simple Object Access Protocol Qui est derrire SOAP (Microsoft et IBM) Objectifs viss
Assurer la communication entre applications dune mme entreprise (intranet) Assurer les changes interentreprises entre applications et services Web
keulkeul.blogspot.com

Spcification du W3C
SOAP 1.1 : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ SOAP 1.2 : http://www.w3.org/TR/soap12/

Pour comparaison, SOAP est similaire aux protocoles RPC


SOAP - M. Baron - Page 7

Comparaison

keulkeul.blogspot.com

SOAP - M. Baron - Page 8

O est utilis SOAP ?


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


SOAP - M. Baron - Page 9

Do you speak SOAP ? Pour lire et crire du SOAP, les pr-requis sont
XML XML Schema

Le pour
Utile pour dbugger une application Utile pour raliser des tests via SOAP UI Intercepter les messages bas niveau SOAP (via les handlers)
keulkeul.blogspot.com

Le contre
Les APIs fournissent une abstraction des messages SOAP
SOAP - M. Baron - Page 10

Concepts dun message SOAP Les messages SOAP sont utiliss pour envoyer (requte) et recevoir (rponse) des informations dun rcepteur Un message SOAP peut tre transmis plusieurs rcepteurs intermdiaires avant dtre reu par le rcepteur final (~ chane de responsabilit) Le format SOAP peut contenir des messages spcifiques
keulkeul.blogspot.com

correspondant des erreurs identifies par le rcepteur Un message SOAP est vhicul vers le rcepteur en utilisant un protocole de transport (HTTP, SMTP, )
SOAP - M. Baron - Page 11

SOAP par lexemple : Requte vers le service HelloWorld Exemple : Appeler les oprations du service HelloWorld
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <hel:makeHelloWorld> <value>Mickael BARON</value> </hel:makeHelloWorld> </soapenv:Body> </soapenv:Envelope>

Message SOAP pour appeler lopration makeHelloWorld contenant un paramtre value

keulkeul.blogspot.com

Message SOAP pour appeler lopration simpleHelloWorld ne contenant pas de paramtre

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <hel:simpleHelloWorld/> </soapenv:Body> </soapenv:Envelope>

SOAP - M. Baron - Page 12

SOAP par lexemple : Rponse du service HelloWorld Exemple (suite) : Message retour de lappel des oprations du service HelloWorld
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:makeHelloWorldResponse xmlns:ns2="http://helloworldwebservice.lisi.ensma.fr/"> <helloWorldResult>Hello World to Mickael BARON</helloWorldResult> </ns2:makeHelloWorldResponse> </soapenv:Body> </soapenv:Envelope>

Les rponses sont sensiblement identiques

keulkeul.blogspot.com

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:simpleHelloWorldResponse xmlns:ns2="http://helloworldwebservice.lisi.ensma.fr/"> <helloWorldResult>Hello World to everybody</helloWorldResult> </ns2:simpleHelloWorldResponse> </soapenv:Body> </soapenv:Envelope>

SOAP - M. Baron - Page 13

Structure dun message SOAP Un message SOAP est un document XML constitu dune enveloppe compose de deux parties
Un en-tte (header) qui peut tre facultatif Un corps (body)

En-tte SOAP (header facultatif)

keulkeul.blogspot.com

Corps du message SOAP (body)

Enveloppe SOAP
SOAP - M. Baron - Page 14

Lenveloppe SOAP Lenveloppe est la racine dun message SOAP identifie par la balise <soapenv:Enveloppe> La spcification impose que la balise et les sous balises soient explicitement associes un namespace La spcification SOAP dfinit deux namespaces
SOAP-ENV ou soapenv : http://schemas.xmlsoap.org/soap/envelope/ SOAP-ENC : http://schemas.xmlsoap.org/soap/encoding/

La requte et la rponse ont la mme structure


keulkeul.blogspot.com
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> <SOAP-ENV:Body> <!-- Contenu de la Requte --> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Message SOAP dune requte

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> <SOAP-ENV:Body> <!-- Contenu de la Rponse --> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Message SOAP dune rponse

SOAP - M. Baron - Page 15

En-tte SOAP Len-tte dun message SOAP est utilis pour transmettre des informations supplmentaires sur ce mme message Len-tte est dfini par la balise <SOAP-ENV:Header>
Llment peut tre facultatif Doit tre plac avant le corps

Diffrents usages de len-tte ?


Informations authentifiant lmetteur Contexte dune transaction
keulkeul.blogspot.com

Pour certains protocole de transport (FTP par exemple), len-tte peut tre utilis pour identifier lmetteur du message

Un message SOAP peut transiter par plusieurs intermdiaires avant le traitement par le rcepteur final
Pattern Chane de responsabilit Zone lecture / crite par les intermdiaires
SOAP - M. Baron - Page 16

En-tte SOAP En-tte dans une srie de transferts successifs de message SOAP
Emetteur du message SOAP
<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise1 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ... > </balise1> <balise2> </balise2> <balise3> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>

Valeurs conventionnelles pour la transmission par chane

1 Rcepteur intermdiaire n1 2 keulkeul.blogspot.com Rcepteur intermdiaire n2

<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise2 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ...> </balise2> <balise3> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>

Le contenu de cet lment sera trait par le rcepteur intermdiaire

3 Rcepteur final du message SOAP

<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise3 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ...> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>

SOAP - M. Baron - Page 17

Corps SOAP Le corps dun message SOAP est constitu par un lment

<SOAP-ENV:Body>
Llment <SOAP-ENV:Body> peut contenir soit
Une erreur en rponse une requte (lment <SOAP-ENV:Fault>) Des informations adresses au destinataire du message SOAP respectant un encodage dtermin

Lencodage des informations est prcis par les bindings du document WSDL
keulkeul.blogspot.com

Attribut style (Document et RPC) Attribut use (encoded et litteral)

Pour faire simple nous utiliserons les services Web dans le cadre de lappel une procdure distante
SOAP - M. Baron - Page 18

Corps SOAP Lobjectif vis par SOAP a t de fournir un mcanisme standardis pour lappel de procdures distant (RPC) De ce fait les informations adresses au destinataire de messages SOAP doivent respectes un certain nombre de convention Appel dune opration reprsente par une struct
Le nom de la structure est celui de lopration appeler Chaque paramtre de lopration est dfini comme un sous lment de la structure
keulkeul.blogspot.com

Si un paramtre est un type complexe (Person par exemple) une nouvelle structure est dfinie contenant son tour des sous lments

Le rsultat est galement reprsent par une struct


Le nom de la structure est celui de lopration suivi de Response Les paramtres sont galement structurs
SOAP - M. Baron - Page 19

Corps SOAP Exemple : corps de messages SOAP pour appeler des oprations du service Web Notebook
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithSimpleType> <name>BARON Mickael</name> <address>Poitiers</address> <birthyear>17081976</birthyear> </not:addPersonWithSimpleType> </soapenv:Body> </soapenv:Envelope>

Message SOAP pour appeler lopration

addPersonWithComplexType

Paramtre de type complexe dfini dans une structure (newPerson)

keulkeul.blogspot.com

Message SOAP pour appeler lopration addPersonWithSimpleType

Trois paramtres
SOAP - M. Baron - Page 20

Corps SOAP Exemple : corps de messages SOAP pour le rsultat des oprations du service Web Notebook
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.lisi.ensma.fr/"> <addPersonWithComplexTypeResult>true</addPersonWithComplexTypeResult> </ns2:addPersonWithComplexTypeResponse> </soapenv:Body> </soapenv:Envelope>

Messages SOAP pour la rponse puisque les noms des oprations sont suivis de Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithSimpleTypeResponse xmlns:ns2="http://notebookwebservice.lisi.ensma.fr/"> <addPersonWithSimpleTypeResult>true</addPersonWithSimpleTypeResult> </ns2:addPersonWithSimpleTypeResponse> </soapenv:Body> </soapenv:Envelope>

keulkeul.blogspot.com

Les paramtres de sorties suivent la mme convention que les paramtres dentrs

SOAP - M. Baron - Page 21

SOAP transport par HTTP SOAP utilise un protocole de transport pour vhiculer les messages SOAP de lmetteur au rcepteur
HTTP, SMTP, FTP, POP3 et NNTP

Le modle requte/rponse de SOAP convient parfaitement au modle requte/rponse HTTP


En-tte HTTP Corps HTTP En-tte SOAP (header facultatif) Corps du message SOAP (body) Enveloppe SOAP Requte / Rponse HTTP
SOAP - M. Baron - Page 22

Contenu tudi prcdemment

keulkeul.blogspot.com

SOAP transport par HTTP Requte SOAP HTTP


Mthode de type POST Ncessite un attribut SOAPAction
POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope>

Rponse SOAP HTTP


Exploite les codes retours HTTP
keulkeul.blogspot.com
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Sun, 13 Dec 2009 12:00:33 GMT <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.lisi.ensma.fr/"> <addPersonWithComplexTypeResult> true </addPersonWithComplexTypeResult> </ns2:addPersonWithComplexTypeResponse> </soapenv:Body> </soapenv:Envelope>

Si code de type 2xx, message SOAP reu Si code 500, message en erreur, le corps SOAP doit contenir fault

SOAP - M. Baron - Page 23

Traitement des messages SOAP


POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope>

Rception dun message SOAP via le transport HTTP

Conteneur Web

Couche de transport HTTP Couche de transport HTTP

La partie HTTP est nettoye

keulkeul.blogspot.com

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope>

API SOAP API SOAP 3

Invocation de la mthode en fonction de lopration SOAP

Couche daccs aux implmentations des services Web (diffrents langages)

Java

.NET

C++

PHP

SOAP - M. Baron - Page 24

Framework Web Service

SOAP UI : outil graphique de tests de Service Web SOAP UI est un outil pour tester des Services Web
www.soapui.org
Disponible pour en standalone ou intgr dans les environnements de dveloppement (Eclipse, Intellij, Netbeans, Maven, ) Peut sutiliser pour nimporte quelle plateforme de dveloppement

Fonctionnalits de SOAP UI
Supporte les Services Web tendus (WSDL + SOAP + UDDI) ou REST Inspecter des Services Web
keulkeul.blogspot.com

Invoquer des Services Web Dvelopper des Services Web Simuler des Services Web via des bouchons (mocks) Effectuer des tests qualits (temps de rponse, ) SOAP
- M. Baron - Page 25

SOAP UI : outil graphique de tests de Service Web


Les projets regroupant les appels aux Services Web Les messages SOAP (requte et rponse)

keulkeul.blogspot.com

Les logs de SOAPUI

SOAP - M. Baron - Page 26

You might also like