Professional Documents
Culture Documents
Chapitre 5 - Les Services Web SOAP
Chapitre 5 - Les Services Web SOAP
Chapitre 5 :
Les Services Web SOAP
hamdi.aloulou@isima.u-monastir.tn
Introduction
› Il existe deux types de Services Web les plus connus :
2
REST VS SOAP
3
Services Web SOAP VS REST
Carte Postale Vs. Courrier
4
Services Web SOAP VS REST
<Envelope>
<Header/>
<Body>
<hello>
<name>ISIMa</name>
</hello>
</Body>
</Envelope>
SOAP
Client Serveur
GET http://localhost:8080/Bibliotheque/Livre/{id}
REST
Client Serveur
Services Web SOAP VS REST
SOAP
➔ Avantages
➔ Cible l’appel de service
➔ Standardisé
➔ Sécurité (WS-Security)
➔ Inconvénients
➔ Performances
➔ Complexité, lourdeur
Services Web SOAP VS REST
REST
➔ Avantages
➔ Cible l’appel de ressources
➔ Simplicité de mise en œuvre
➔ Lisibilité par un humain
➔ Repose sur les principes du web
➔ Représentations multiples (XML, JSON,…)
➔ Inconvénients
➔ Destiné pour la manipulation des ressouces
➔ Sécurité restreinte par l’emploi des méthodes HTTP
Le principe des services
web SOAP
16
Les services web SOAP
Service Oriented Architecture Protocol
› Un message SOAP
– Permet la transmission d’un message au format XML
› Une Requête SOAP c’est une requête HTTP mais avec le corps
de la requête contient un message XML avec une structure
bien défini.
18
L’Idée des Services Web SOAP
› Au niveau de serveur il y a des APIs qui sont capables de lire
ce message. (pour JAVA il y a par exemple JaxWS).
19
L’Idée des Services Web SOAP
(POST)
(POST)
21
La méthode HTTP pour les Web Service SOAP
› SOAP:
– POST : La méthode utilisé pour envoyer la requête SOAP et recevoir
la réponse SOAP.
22
Web Service : Requête SOAP avec POST
POST /Nom_Script HTTP/1.0
Accect :text/html
Entête de la requête
Accept-Language : fr
User-Agent : Mozilla/4.0
<Envelope>
<Header/>
<Body>
<conversion>
<montant>12</montant>
</conversion>
</Body>
</Envelope>
23
Corps de la requête
Web Service : Réponse SOAP avec POST
HTTP/1.0 200 OK
Date : Wed, 05Feb18 16:42:30 GMT
Server : Apache/1.3.24 Entête de la réponse
Last-Modified : Wed 02Oct17 23:50:01 GMT
Content-Type : Text/html
Content-length : 4205
<Envelope>
<Header/>
<Body>
<conversionResponse>
<return>132.0</return>
</conversionResponse>
</Body>
</Envelope>
24
Corps de la réponse
Concepts des Services Web SOAP
25
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement autour
des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
› protocole d'échange inter-applications
› indépendant de toute plate-forme,
› basé sur le langage XML.
› Un appel SOAP est transporté dans le protocole HTTP.
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)
26
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement autour
des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
› Description au format XML des Web Services
› Pour qu’un client puisse faire appel à un WS, il a besoin de savoir
son nom, le nom des méthodes et les paramètres d’entré et de
sortie de chaque méthode. C’est la raison pour laquelle dans les
web services il y a ce qu’on appelle les WSDLs.
› Précise les méthodes pouvant être invoquées, leurs signatures et
le point d’accès (URL, port, etc..).
– UDDI (Universal Description, Discovery and Integration) 27
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement autour
des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)
› Annuaire de Web Services, permettant à la fois la
publication et la recherche des Web Services.
› UDDI se comporte lui-même comme un Web Service dont les
méthodes sont appelées via le protocole SOAP.
› On utilise l’annuaire dans le cas où on ne connait pas encore où se
trouve le WS. Si on a besoin d’un WS, et qu’on ne connait pas où
on va le trouver, on peut utiliser un annuaire pour récupérer
l’adresse des WS.
28
L’Idée des Services Web SOAP
2: J’ai trouvé! Voici le serveur
hébergeant ce service web Contrat
UDDI SOAP
(WSDL)
3: Quel est le format d’appel du
service que tu propose
un service web
1: Je cherche
Client Serveur
XML
30
Structure d’un message SOAP
Structure d’un message SOAP
<Envelope>
<Header/>
<Body>
<confirmation>
<heure>10h</heure>
</confirmation>
</Body>
</Envelope>
36
Fautes SOAP
› Utilisé lorsqu’une erreur survient
– En général dans une réponse à un message reçu auparavant
<Envelope>
<Body>
<Fault>
<Detail>
<ErrorDetails>
<ErrorCode>500</ErrorCode>
<ErrorMessage>Failed to locate method(ValidateCreditCard)</ErrorMessage>
</ErrorDetails>
</Detail>
</Fault>
</Body>
</Envelope>
38
Le fichier de description
WSDL
39
WSDL
Web Services Description Language
› C’est un langage décrivant comment s’interfacer avec des services
web basés sur XML.
+ Message Part
Input
SOAPBinding SOAPOperation
Binding
Operation Input
Output
Documentation
Service
Port SOAPAddress
45
Exemple
46
Exemple
47
Exercices
50
Exercice
› Qu’elle est l’usage classique de HTTP ?
53
Mise en Œuvre avec JAVA
› Il existe trois méthodes différentes pour développer des
services Web SOAP avec JAVA :
– En utilisant l’API JAX-WS
54
L’API JAX-WS
Mise en pratique
55
Mise en Œuvre avec JAVA : JAX-WS
› JAX-WS permet de développer très simplement des services
web en Java.
56
Mise en Œuvre avec JAVA : JAX-WS
@WebService(serviceName="BanqueWS")
Public class BanqueService {
@WebMethod(operationName="ConversionEuroToTND")
public double conversion(@WebParam(name="montant") double mt){
return mt*3.27;
}
@WebMethod
public String test(){
return "Test";
}
@WebMethod
public Compte getCompte(){
return new Compte(1,7000);
}
@WebMethod
public List<Compte> getComptes(){
List<Compte> cptes = new ArrayList<Compte>();
cptes.add(new Compte(1, 7000)); cptes.add(new Compte(2, 9000));
return cptes;
}
57
}
Mise en Œuvre avec JAVA : JAX-WS
› Une classe Java utilise des annotations JAX-WS afin de
générer le document WSDL.
58
L’API JAX-WS pour les Web Services de JAVA
› L’API JAX-WS est très simple :
› Vous n’aurez pas à gérer comment les requêtes SOAP sont traités
59
Développement d’un Web Service avec JAX-WS
› Pour définir un Service Web, on utilise l’annotation @WebService
@WebService
public class CircleFunctions {
public double getArea(double r) {
return java.lang.Math.PI * (r * r);
}
public double getCircumference(double r) {
return 2 * java.lang.Math.PI * r;
}
60
Développement d’un Web Service avec JAX-WS
› L’API JAX-WS fourni aussi l’annotation @WebMethod pour
personnaliser les méthodes du Service Web :
@WebMethod
public double getArea(double r) {
return java.lang.Math.PI * (r * r);
}
61
Développement d’un Web Service avec JAX-
WS sous Eclipse
› Créer un projet Web dynamique
› Choisir le serveur Wildfly comme
Target runtime
› Changer Execution Environment
du BuildPath à JavaSE-1.8
62
Développement d’un Web Service avec JAX-
WS sous Eclipse
› Créer la classe d’implémentation du service
› Ajouter les annotations
63
Développement d’un Web Service avec JAX-
WS sous Eclipse
› Lancer le service web
sur le serveur Wildfly
64
Génération du fichier WSDL
› Comment générer le fichier WSDL correspondant au Service
Web créé ?
– JAX-WS le fait pour vous !
65
Développement d’un Web Service avec JAX-
WS sous Eclipse
› Tester le service web avec
l’explorateur web service
66
Développement d’un Web Service avec JAX-
WS sous Eclipse
› Tester le service web avec l’explorateur web service
67
Consommer un Web Service avec JAX-WS
› JAX-WS est une API qui peut être utilisé :
– Du côté serveur pour définir des Web Services
– Du côté client pour consommer des Web Services
– Tous ce que JAX-WS a besoin est la localisation du fichier WSDL et les librairies
JAX-WS
68
Consommer un Web Service avec JAX-WS
› Un environnement de développement IDE comme Eclipse
fournie des outils pour générer automatiquement le client
Web Service.
69
La méthode Bottom Up
Mise en pratique
70
Développement d’un Web Service avec la
méthode Bottom up sous Eclipse
› Créer un projet web dynamique
› Choisir le serveur WildFly
comme Target Runtime
› Choisir JavaSE-8 comme
« Execution environment »
dans le Build Path
71
Développement d’un Web Service avec la
méthode Bottom up sous Eclipse
› Créer la classe qui implémente le service web
72
Développement d’un Web Service avec la
méthode Bottom up sous Eclipse
› Générer le service web
Bouton droit classe d’implémentation
/new/other/web services/web service
73
Développement d’un Web Service avec la
méthode Bottom up sous Eclipse
› Démarrer le serveur
74
Développement d’un Web Service avec la
méthode Bottom up sous Eclipse
› Monitoring du service web
75
La méthode Top Down
Mise en pratique
76
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
› Créer un projet web dynamique
› Choisir le serveur WildFly
Comme Target Runtime
› Choisir JavaSE-8 comme
« Execution environment »
dans le Build Path
77
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
› Importer le fichier wsdl dans le dossier WebContent
› Générer le service web
Bouton droit fichier wsdl
/new/other/web services/web service
78
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
› Démarrer le serveur
› La classe d’implémentation
(AreaServiceSOAPImpl.java) apparait.
79
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
› Changer les méthodes pour correspondre à l’implémentation
souhaité
80
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
› Créer le client web service
› Sélectionner le fichier
wsdl généré lors de la
création du web service
(AreaServiceSOAP.wsdl)
82
Développement d’un Web Service avec la
méthode Top Down sous Eclipse
83
Tester les services web SOAP
› L’outil SoapUI
84