0570 Les Services Web 5
0570 Les Services Web 5
0570 Les Services Web 5
Sana Sellami
[email protected]
Dr Oussama HAMAL
[email protected]
2015-2016
PLAN
1. Qu’est ce qu’un service Web?
2. Architecture des Services Web
3. Création et déploiement des Services Web SOAP
en Java
4. Services Web REST
5. Développement de Services Web REST en Java
2
1. QU’ EST CE QU’UN SERV)CE WEB 3
Un service Web .?
Définition du W3C (World Wide Web Consortium) :
http://www.w3.org/TR/ws-gloss/
Un service Web .?
CLIENT
SERVEUR
INTERNET
CLIENT
5
CLIENT
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Un service Web .?
Protocole de description
des services de transport
HTTP, SMTP,…
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Un service Web .?
• Proposant diverses fonctionnalités que d’autres programmes
peuvent
• découvrir dynamiquement
• et utiliser grâce à des protocoles
• décrits en XML
• basés sur l’échange de messages
– écrits en XML
– transmis par HTTP, FTP, SMTP, etc.
• Caractéristiques
• Réutilisable
• Indépendamment de
• la plate-forme (UNIX, Windows, …)
• l’implémentation (VB, C#, Java, …) 7
• l’architecture sous-jacente (.NET, JEE, …)
Exemple de services existants
• Google (http://www.google.com/apis/) :
• accès gratuit mais limité (1000 requêtes par jour après
enregistrement)
• Amazon (http://aws.amazon.com/fr/ )
• accès gratuit mais limité (1 requête par seconde après
enregistrement)
10
• Etc…
2. ARCHIECTURES DES SERVICES WEB
11
Architecture générale des services
Web et des clients
HTTP
Socket
Clients du service Web Interface Web Service
Bibliothèque
JAVA Netbeans
JEE SOAP
Bibliothèque
C# Visual Studio C# REST
Bibliothèque
PHP Eclipse PDT PHP XML-RPC
12
Les web services Ingénierie systèmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Architecture Orientée Services (SOA)
Transformer les composants d'un système d'information
en services, intégrables à la volée, pour construire des
processus métier transverses.
14
Architecture Orientée Service (SOA)
• Trois acteurs: le fournisseur, annuaire et client
• Reçoit et enregistre les descriptions
de services publiées par les fournisseurs
• Obtient la • Reçoit et répond aux recherches
description du de services lancées par les clients
service satisfaisant
sa requête Annuaire
Publication de la
Localisation de
description
service
Serveur Web
Client Fournisseur
interaction
• Définit le service 15
• Publie sa description dans
l’annuaire
• Réalise les opérations
Architecture Orientée Service (SOA)
Ordonnancement des actions
• 1. Définition, déploiement et description du service
Quelle est la fonctionnalité fournie et comment y accéder
(description WSDL)
• 3. Recherche du service
Le client envoie une requête définissant ses besoins au
registre, il reçoit en retour une liste de services
16
Architecture Orientée Service (SOA)
• 4. Récupération de la description du service
Le client récupère par le registre le lien vers le fichier
décrivant le service sélectionné. )l ”sait” maintenant
comment accéder au service (comment ”l'invoquer”
19
SOAP
• S’appuie sur le protocole HTTP:
• HyperText Transfert Protocol
• Tim Berners-Lee, fin 89 - début 90
• Protocole de communication client/serveur basé sur
TCP/IP
• Simple pour le récupération de documents (GET, HEAD)
• Simple pour la transmission de données (GET, POST)
21
SOAP: Structure
• Envelope expliqant comment la
requête doit être traitée et présentant
les éléments contenus dans le
message.
22
SOAP: Exemple
Requête SOAP getsomme envoyée à un service Sommer
23
SOAP: Exemple (suite)
Réponse SOAP
24
WSDL (Web Services Description Language)
27
Figure : Concepts définis par WSDL 1.1 et WSDL 2.0
http://www.w3.org/TR/wsdl20/
Source: http://en.wikipedia.org/wiki/Web_Services_Description_Language
WSDL (Web Services Description Language)
Composé de l’e se le
des opérations abstraites
Un ensemble de
points finaux du
réseau appelés «
ports » permettant 28
de déterminer la
localisation du
service
Exemple WSDL 1.1: sommer.wsdl
Racine du document
Définition des types de données (facultatif)
29
service: localisation des services web
Exemple : Gestion de compte
31
Structure d’un WSDL : <Types>
• Par exemple, dans la gestion de compte, la méthode
listeMouvements retourne un Vector. Nous aurons alors la
description de ce type, comme illustré ici :
32
Structure d’un WSDL : <message>
• Décrit les données associées à une opération (1 requête et
1 réponse HTTP par opération, 1 message d'erreur ”fault”
optionnel).
33
Structure d’un WSDL : <message>
• Chaque message peut être un composé de plusieurs parties
34
Structure d’un WSDL : <portType>
• Un document WSDL peut contenir 0 à plusieurs portType
35
Structure d’un WSDL : <portType>
• Définition d’un seul type de port, avec les 4 opérations
abstraites, correspondant aux 4 déclarations de méthodes
dans l’interface Java :
36
Structure d’un WSDL : <binding>
• Une liaison (ou binding) décrit la façon dont un
portType en d’autres termes l’abstraction du service, i.e.
ses opérations abstraites) est mis en oeuvre pour un
protocole particulier (HTTP par exemple) et un mode
d’invocation RPC par exemple .
37
Structure d’un WSDL : <binding>
38
Structure d’un WSDL : <service>
• Un service est décrit comme un ensemble de points finaux
du réseau appelés « ports »
39
Structure d’un WSDL : <port>
• Un port spécifie une URL qui correspond à
l’implémentation du service par un fournisseur.
• Le port est associé à un « binding » définissant ainsi un
simple point de terminaison (endpoint:@ où se situe le WS)
40
Mapping Java WSDL
41
Mapping Java WSDL
Code Java Fichier WSDL
Classe Java Service
public class IpAddressSearchWebService <wsdl: service name="IpAddressSearchWebService">
</wsdl:service>
Commentaire Documentation
/*using this function, user can find the <wsdl:documentation>
country and city by Ip */ using this function, user can find the country and city by Ip
</wsdl:documentation>
Méthode Operation
public String[] getCountryCityByIp(String <wsdl:operation name="getCountryCityByIp">
<wsdl:input …./>
theIpAddress) <wsd:output…./>
</wsdl:operation>
Paramètre Types
<wsdl:types>
String theIpAddress <s:schema elementFromDefault=“qualified">
<s:element name="getCountryCityByIp">
<s:complexType>
<s:sequence>
<s:element minoccurs=“0" maxoccurs=“1" name=“theIpAddress"
type=“s:string" /> 42
</s:sequence> </s:complexType>…</s:element>
</wsdl:types>
UDDI : Universal Description, Discovery and
Integration
• Universal Description, Discovery and Integration
• Historique
• À l’origine: annuaire universel pour les services web (à la Google)
• Aujourd’hui: vise plutôt les environnements privés, à petite échelle
• Raisons: peu d’annuaires généraux UDDI (IBM, Microsoft, …),
contenu pauvre et non fiable
• Meilleure fiabilité en environnements contraints, privés (~EAI)
• Élément d’infrastructure qui aide aussi à stocker des infos absentes en
WSDL
• Versions
• Version 1: les bases d’un annuaire de services
• Version 2: adaptation à SOAP et WSDL
• Version 3: redéfinition du rôle UDDI, accent sur les
implémentations privées, sur l’interaction entre annuaires privés et 43
publics
UDDI : Universal Description, Discovery and
Integration
• L’annuaire UDDI permet de :
• Publier, découvrir des informations sur une entreprise et ses
services
• . UDDI
Pages Blanches
Pour trouver un service par contact, nom et adresse
Pages Jaunes
Pour trouver un service par description (WSDL) répertorié par catégorie
Pages vertes
Pour trouver un service par caractéristiques techniques 45
UDDI
• Le modèle UDDI comporte 5 structures de
données principales décrites sous forme de
schémas XML :
• BusinessEntity : ensemble
d’informations sur l’entreprise qui publie
les services dans l’annuaire
• BusinessService : ensemble
d’informations sur les services publiés par
l’entreprise
• BindingTemplate : ensemble
d’informations concernant le lieu
d’hébergement du service i.e. adresse du
fournisseur)
• publisherAssertion : ensemble 46
d’informations contractuelles entre
partenaires en échanges commerciaux
Revenons à l’architecture
Demande de Service
Annuaire Publication de la
(Découverte):
Search Message en SOAP UDDI description WSDL
interaction
HTTP(S), FTP, etc 47
Exemple Annuaire
Interface du service
2. Pourrais-je avoir l’i terfa e du servi e
WSDL
Interface WSDL ConvertEuro
Proxy
Génère un proxy
Service
Public class ConvertEuro WebService
3. Invocation du service+paramètres {
[WebMethod]
Public double convertFranc(double
value)
48
{return (value*6,5559)
}}
Proxy Renvoie le résultat
3. CRÉATION ET DÉPLOIEMENT DE
SERVICES WEB EN JAVA
49
Architecture générale des services
Web et des clients
HTTP
Socket
Clients du service Web Interface Web Service
Bibliothèque
JAVA Netbeans
JEE SOAP
Bibliothèque
C# Visual Studio C# REST
Bibliothèque
PHP Eclipse PDT PHP XML-RPC
50
Création de services web
La o eptio d’u servi e We é essite les étapes suiva tes :
• Définir et créer un service Web
• Publier le servi e We sur le serveur d’appli atio
• Utiliser un service Web en créant un client.
Créer un service Web Publier un service Web Utiliser un service Web
51
CLIENT (utilisateur)
Création de services web en Java
• Deux approches pour la création de SW:
• Outils utilisés:
• Frameworks: Axis2 , Apache CXF (framework Java/Web
Services) , Spring WS
• API JAX-WS et JAX-RS
• Etc.
52
• Serveurs: Tomcat, Glassfish, etc.
Axis
• Axis est un engin permettant la création des web services en
technologie SOAP, réalisé par Apache Software Foundation.
Offre :
• un environnement pouvant fonctionner comme un serveur SOAP/Rest
indépendant
• une API pour développer des services web SOAP RPC ou à base de
messages SOAP,
• http://tomcat.apache.org/
54
Glassfish
• Téléchargement:
• https://glassfish.java.net/
55
Apache CXF
• Framework open Source en langage Java pour le
développement des Services Web
56
JAX-WS (Java API for XML WS)
• Java API for XML WS
62
Et concrètement ça donne quoi?
• Vous allez faire le TP qui est divisé en deux parties:
1. Tester des services web existants
2. Création et déploiement de services web
• Java
• L’)DE Netbeans
• Le serveur d’applications Glassfish