Sunteți pe pagina 1din 60

Les Services Web

Sana Sellami
sana.sellami@univ-amu.fr

2016-2017
Objectifs du cours

Comprendre lintrt et les enjeux des services Web

Dcouvrir les principales technologies des services Web (SOAP,


WSDL, UDDI , REST )

Manipuler des donnes XML via les API SAX, DOM et JAXB

Crer, dployer, mettre disposition et utiliser des services


Web en SOAP et REST
2
Droulement des sances
Sance 1: Tests de SW existants et Cration de services Web
SOAP avec JAX-WS et partir de WSDL
Sance 2: Cration et dploiement de SW SOAP
Sance 3: Cration de services REST
Sance 4: Prsentation+ dbut projet
Sance 5: Projet

3
PLAN
1. Quest ce quun service Web?
2. Architecture des Services Web
3. Cration et dploiement des Services Web SOAP
en Java
4. Services Web REST
5. Dveloppement de Services Web REST en Java

4
1. QU EST CE QUUN SERVICE WEB 5
Un service Web .?
Dnition du W3C (World Wide Web Consortium) :

Un service web est un systme logiciel identi par un URI,


dont les interfaces publiques et les bindings sont dnies
et dcrites en XML. Sa dnition peut tre dcouverte
[dynamiquement] par dautres systmes logiciels. Ces autres
systmes peuvent ensuite interagir avec le service web dune
faon dcrite par sa dnition, en utilisant des messages XML
transports par des protocoles Internet.

http://www.w3.org/TR/ws-gloss/
Un service Web .?
Proposant diverses fonctionnalits que dautres programmes
peuvent
dcouvrir dynamiquement
et utiliser grce des protocoles
dcrits en XML
bass sur lchange de messages
crits en XML
transmis par HTTP, FTP, SMTP, etc.

Caractristiques
Rutilisable
Indpendamment de
la plate-forme (UNIX, Windows, )
limplmentation (VB, C#, Java, ) 7
larchitecture sous-jacente (.NET, JEE, )
Un service Web .?
Services Web

CLIENT

SERVEUR
INTERNET

CLIENT

8
CLIENT
Les web services Ingnierie systmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Un service Web .?
Un service Web est un programme sollicit via Internet
par diffrents type de clients, permettant lchange de
donnes an que lapplication appelante puisse intgrer
le rsultat de cet change ses propres analyses. Les
requtes et les rponses seffectuent dans des formats
ouverts (HTML, XML, JSON ou text) et transitent par
Internet.

9
Un service Web .?

Protocole de description Protocole de description


des services (WSDL,) des messages (SOAP,)

Protocole de description
des services de transport
(HTTP, SMTP,)

10

Les web services Ingnierie systmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Exemple de services existants
Google (http://www.google.com/apis/) :
accs gratuit mais limit (1000 requtes par jour aprs
enregistrement)

Amazon (http://aws.amazon.com/fr/ )

accs gratuit mais limit (1 requte par seconde aprs


enregistrement)

bien dautres ! (cf http://www.xmethods.com/


http://webservicex.net par exemple)
11
Exemple de services existants
Pour la cration dun nuage de tags:
Wordle: http://www.wordle.net/
Tag Cloud Generator: http://www.tagcloud-generator.com/
Tagxedo: www.tagxedo.com
..

12

En saisissant un ensemble de mots cls


En saisissant lurl de facebook
Exemple de services existants
Outils vous permettant de vous organiser, de
communiquer et de planifier votre travail: Google
Docs, SlideRocket:, Toggl (Free Time Tracking
Software), etc

Rduction dURL (goo.gl, TinyURL, bit.ly, etc.)

De nombreux services proposs par Google


https://developers.google.com/apis-explorer/#p/
Analyse de donnes
Traduction
Rduction dURL
Statistique frquentation site web 13
etc.
2. ARCHIECTURES DES SERVICES WEB

14
Architecture gnrale des services
Web et des clients
HTTP
Socket
Clients du service Web Interface Web Service
Bibliothque
JAVA Netbeans
JEE SOAP
Bibliothque
C# Visual Studio C# REST
Bibliothque
PHP Eclipse PDT PHP XML-RPC

HTML JS Eclipse AJAX


JavaScript

15

Les web services Ingnierie systmes - Concevoir et utiliser des applications 2.0 C#,
Java, PHP, API JavaScript, Android SDK, iOS SDK., Jonathan Fontanel, Philippe
Architecture Oriente Services (SOA)
Transformer les composants d'un systme d'information
en services, intgrables la vole, pour construire des
processus mtier transverses.

La notion de SOA renvoie une nouvelle manire


d'intgrer et de manipuler les diffrentes briques et
composants applicatifs d'un systme informatique
(comptabilit, gestion de la relation client, production, etc.)
et de grer les liens qu'ils entretiennent.

Repose sur la rorganisation des applications en ensembles


fonctionnels appels services. 16
Architecture Oriente Service (SOA)
Trois acteurs: le fournisseur, annuaire et client
Reoit et enregistre les descriptions
de services publies par les fournisseurs
Obtient la Reoit et rpond aux recherches
description du de services lances par les clients
service satisfaisant
sa requte Annuaire
Publication de la
Localisation de description
service

Serveur Web
Client Fournisseur
interaction

Dfinit le service 17
Publie sa description dans
lannuaire
Ralise les oprations
Architecture Oriente Service (SOA)
Ordonnancement des actions
1. Dfinition, dploiement et description du service
Quelle est la fonctionnalit fournie et comment y accder
(description WSDL)

2. Publication de la description du service


Envoi de la description dans un registre (annuaire).

3. Recherche du service
Le client envoie une requte dfinissant ses besoins au
registre, il reoit en retour une liste de services
18
Architecture Oriente Service (SOA)
4. Rcupration de la description du service
Le client rcupre par le registre le lien vers le fichier
dcrivant le service slectionn. Il sait maintenant
comment accder au service (comment l'invoquer)

5. Excution (invocation) du service Web


Le client peut directement envoyer une requte au service
pour raliser la fonctionnalit
Il peut aussi rcuprer plusieurs descriptions de services
diffrents et les composer pour obtenir une fonctionnalit
avance (ex: voyage)
19
Standards
Protocole : SOAP = HTTP + XML
Requte/rponse = message XML
Cadre gnral permettant lchange de donnes structures au
format XML
Protocole de transport de ces donnes bas sur HTTP

WSDL (Web Service Description Language)- Description de


service web
Description des interfaces des services

UDDI - Dcouverte automatique des services (dynamicit)


Annuaire contenant les interfaces (Pages Jaunes, Vertes, Blanches),
permettant denregistrer et de rechercher des descriptions de
services web
20
SOAP
Simple Object Access Protocol, norme W3C
SOAP 1.0: 1999, bas sur HTTP
SOAP 1.1: 2000, plus gnrique, autres protocoles
SOAP 1.2: recommandation W3C, 2007:
https://www.w3.org/TR/soap/

Est un protocole de transmission de messages

Permet des appels de procdures distance (RPC)


s'appuyant principalement sur le protocole HTTP et sur
XML, mais aussi SMTP et POP.
21
SOAP
Sappuie sur le protocole HTTP:
HyperText Transfert Protocol
Tim Berners-Lee, fin 89 - dbut 90
Protocole de communication client/serveur bas sur
TCP/IP
Simple pour le rcupration de documents (GET, HEAD)
Simple pour la transmission de donnes (GET, POST)

Echange classique avec un service Web


Connexion du client vers le serveur
Demande dun document via une mthode GET
Renvoi du document, erreur ou information sur le
document 22
Dconnexion
SOAP
La requte SOAP intervient sur le rseau
entre le client et le serveur

Interaction: SOAP Serveur Web


Client Fournisseur listner

SOAP Ct client SOAP Ct Serveur


Ouverture d'une connexion HTTP Rcupre la requte
Requte SOAP: document XML Excution de la mthode
dcrivant avec les paramtres
o La mthode invoquer sur la Renvoie une rponse SOAP
machine distante (document XML) au client
o les paramtres de la mthode

23
SOAP: Structure
Envelope contient des dfinitions de
namespaces

Header (en-tte) utilis pour


transmettre des donnes
dauthentification ou de gestion de
session.

Body (Corps) contient les


informations obligatoires destines
l'ultime destinataire du message.

24
SOAP: Exemple
Requte SOAP getsomme envoye un service Sommer

25
SOAP: Exemple (suite)
Rponse SOAP

26
WSDL (Web Services Description Language)

Langage de description des services web

Depuis 2007, WSDL 2.0 est une recommandation W3C

Objectif: Dcrire les services comme un ensemble


doprations et de messages abstraits relis (bind) des
protocoles et des serveurs rseaux

Bas sur le langage XML (schma XML)


27
WSDL (Web Services Description Language)

Regroupe les informations ncessaires pour interagir avec


le service :
les mthodes, les paramtres et valeurs retournes, le
protocole de transport utilis, la localisation du service

Document indispensable au dploiement de Services Web


Publication et recherche de services au sein de lannuaire se
font via les documents WSDL
Pour laccs un service particulier, un client se voit retourn
lURL du fichier WSDL dcrivant limplmentation du service
28
WSDL (Web Services Description Language)

Description 2 niveaux: Sparation entre la partie abstraite


et concrte

29
Figure : Concepts dfinis 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)

Dcrit la structure des donnes


transmises dans un message

Dcrit lensemble des donnes


transmises au cours de lopration

Compos de lensemble
des oprations abstraites

Dcrit la faon dont un


ensemble doprations
abstraites, appel type
de port , est li un port
selon un protocole rel

Un ensemble de
points finaux du
rseau appels
ports permettant
30
de dterminer la
localisation du
service
Exemple WSDL 1.1: sommer.wsdl
Racine du document
Dfinition des types de donnes (facultatif)

Message: Dfinition des messages changeables

PortType: dfinition des ensembles


doprations

31
service: localisation des services web
Structure dun WSDL : <Types>
Un type dcrit la structure de donnes transmises dans un
message.

Contient les dfinition de types utilisant un systme de


typage par dfaut XML Schema (XSD).

Pouvant contenir des types simples et complexes

32
Structure dun WSDL : <message>
Dcrit les donnes associes une opration (1 requte et
1 rponse HTTP par opration, 1 message d'erreur fault
optionnel).

Un document WSDL peut contenir zro ou plusieurs


messages.

Chaque message peut tre un compos de plusieurs parties

33
Structure dun WSDL : <portType>
Un document WSDL peut contenir 0 plusieurs portType

Llment portType contient un seul attribut name. La


convention de nommage nameOfWebService PortType.

Compos d'un ensemble d'oprations abstraites (i.e.


signature de la mthode). Une opration est compose dun
message pour lappel (Input) et un pour le retour (Output).

34
Structure dun WSDL : <portType>
Dfinition dun seul type de port, avec les oprations
abstraites, correspondant aux dclarations de mthodes
dans linterface Java :

35
Structure dun WSDL : <binding>
Une liaison (ou binding) dcrit la faon dont un
portType(en dautres termes labstraction du service, i.e.
ses oprations abstraites) est mis en oeuvre pour un
protocole particulier (HTTP par exemple) et un mode
dinvocation (RPC par exemple).

Pour un portType, on peut avoir plusieurs liaisons, pour


diffrencier les modes dinvocation (RPC ou autres) ou de
transport (HTTP ou autre) des diffrentes oprations.

36
Structure dun WSDL : <binding>
Mode dinvocation

Protocole
Nom de lopration dans le type de port

La reprsentation du message request

La reprsentation du message response

37
Structure dun WSDL : <service>
Un service est dcrit comme un ensemble de points finaux
du rseau appels ports
Un port spcifie une URL qui correspond
limplmentation du service par un fournisseur.
Le port est associ un binding dfinissant ainsi un
simple point de terminaison (endpoint:@ o se situe le WS)

38
Structure dun WSDL : <port>

Nom du service qui encapsule les ports


Nom du port

Nom de la liaison associe au port

39
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>
Mthode Operation
public String[] getCountryCityByIp(String <wsdl:operation name="getCountryCityByIp">
<wsdl:input ./>
theIpAddress) <wsd:output./>
</wsdl:operation>
Paramtre 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" /> 40
</s:sequence> </s:complexType></s:element>
</wsdl:types>
UDDI : Universal Description, Discovery and
Integration
Universal Description, Discovery and Integration

Historique
lorigine: annuaire universel pour les services web ( la Google)
Aujourdhui: vise plutt les environnements privs, petite chelle
Raisons: peu dannuaires gnraux UDDI (IBM, Microsoft, ),
contenu pauvre et non fiable
Meilleure fiabilit en environnements contraints, privs (~EAI)
lment dinfrastructure qui aide aussi stocker des infos absentes en
WSDL

Versions
Version 1: les bases dun annuaire de services
Version 2: adaptation SOAP et WSDL
Version 3: redfinition du rle UDDI, accent sur les
implmentations prives, sur linteraction entre annuaires privs et 41
publics
UDDI : Universal Description, Discovery and
Integration
Lannuaire UDDI permet de :
Publier, dcouvrir des informations sur une entreprise et ses
services

Linscription sur UDDI permet une entreprise de se


prsenter ainsi que ses services

Ladoption de UDDI facilite le dveloppement des changes de


type B2B
Lenregistrement des services dans un annuaire seffectue auprs
dun oprateur (Microsoft ou IBM actuellement) travers son site
mais on peut crer ses propres registres UDDI (UDDI4J, jUDDI)
http://uddi.xml.org/
Un annuaire laide dun browser en ligne: 42
http://soapclient.com/UDDIAdv.html
UDDI : Universal Description, Discovery and
Integration

Comporte plusieurs catgories de donnes: Informations


organises en trois mthodes

. UDDI
Pages Blanches
Pour trouver un service par contact, nom et adresse

Pages Jaunes
Pour trouver un service par description (WSDL) rpertori par catgorie

Pages vertes
Pour trouver un service par caractristiques techniques 43
UDDI
Le modle UDDI comporte 5 structures de
donnes principales dcrites sous forme de
schmas XML :

BusinessEntity : ensemble
dinformations sur lentreprise qui publie
les services dans lannuaire

BusinessService : ensemble
dinformations sur les services publis par
lentreprise

BindingTemplate : ensemble
dinformations concernant le lieu
dhbergement du service (i.e. adresse du
fournisseur)

tModel : ensemble dinformations


concernant le mode daccs du service
(dfinitions WSDL)

publisherAssertion : ensemble 44
dinformations contractuelles entre
partenaires en changes commerciaux
Revenons larchitecture

Demande de Service
Annuaire Publication de la
(Dcouverte):
Search Message en SOAP UDDI description WSDL

SOAP Serveur Web


Client
Programme Rcupration de la Fournisseur
client description WSDL Service

interaction
HTTP(S), FTP, etc 45
3. CRATION ET DPLOIEMENT DE
SERVICES WEB EN JAVA

46
Architecture gnrale des services
Web et des clients
HTTP
Socket
Clients du service Web Interface Web Service
Bibliothque
JAVA Netbeans
JEE SOAP
Bibliothque
C# Visual Studio C# REST
Bibliothque
PHP Eclipse PDT PHP XML-RPC

HTML JS Eclipse AJAX


JavaScript

47
Cration de services web
La conception dun service Web ncessite les tapes suivantes :
Dfinir et crer un service Web
Publier le service Web sur le serveur dapplication
Utiliser un service Web en crant un client.
Crer un service Web Publier un service Web Utiliser un service Web

Serveur dapplication

48

CLIENT (utilisateur)
Cration de services web en Java
Deux approches pour la cration de SW:

Approche Bottom-up (ou code first): Cration dune classe


Javadploiement WSDL

Approche top-down (ou contract-first) : Dvelopper un Service


Web partir de sa description WSDL.

Outils utiliss:
Frameworks: Axis2 , Apache CXF (framework Java/Web
Services) , Spring WS
API JAX-WS et JAX-RS
Etc.
49
Serveurs: Tomcat, Glassfish, tomEE Plus, etc.
Axis
Axis est un engin permettant la cration des web services en
technologie SOAP, ralis par Apache Software Foundation.
Offre :
un environnement pouvant fonctionner comme un serveur SOAP/Rest
indpendant

une API pour dvelopper des services web SOAP RPC ou base de
messages SOAP,

des outils pour crer automatiquement les WSDL correspondant des


classes Java, ou inversement, pour crer les classes Java sur la base
d'un WSDL (classe proxy en quelque sorte, qui fait le lien entre
l'application Java cliente et le service distant),

des outils pour dployer, tester et monitorer des web-services,


Etc
http://axis.apache.org/axis2/java/core/ 50
Tomcat
Apache Tomcat est un conteneur de servlet JEE. Issu
du projet Jakarta, Tomcat est dsormais un projet principal
de la fondation Apache. Tomcat implmente les
spcifications des servlets et des JSP de Sun Microsystems.
Il inclut des outils pour la configuration et la gestion, mais
peut galement tre configur en ditant des fichiers de
configuration XML. Comme Tomcat inclut un serveur HTTP
interne, il est aussi considr comme un serveur HTTP.

http://tomcat.apache.org/

51
Glassfish

GlassFish (Glassfish Enterprise Server) est un serveur


d'applications Open Source de Sun et offre une
implmentation complte de la norme Java EE (EJB, JPA,
JAX-RS, servlets, JAX-WS etc.)

Tlchargement:
https://glassfish.java.net/

52
Apache CXF
Framework open Source en langage Java pour le
dveloppement des Services Web

Inclut la norme JAX-WS, JAX-RS, etc. et le support des


standards des Services Web e.g. SOAP, etc.

Il supporte le mode code-first , cest--dire: il autorise


que le dveloppeur commence par limplmentation du
webservice, avant la cration du contrat dinterface.

53
JAX-WS (Java API for XML WS)
Java API for XML WS

Ensemble d APIs pour la programmation de services web


sur JEE (incluant
JAXB(Java Architecture for XML binding) et SAAJ)

Utilisation simplifie par des annotations dans les classes


Java
Spcification de la correspondance XML - Objets
Facilitation de la programmation des points d entre de
services
54
Annotations JAX-WS
JAX-WS repose sur lutilisation massive dannotations pour
la configuration dun Service Web

Les principales annotations sont les suivantes:


@WebService : Implmentation dun Service Web
@WebMethod : Paramtrer une opration
@WebParam : Paramtrer un message
@WebResult : Paramtrer un message de sortie
@WebFault : Paramtrer un message fault

A noter que seule lutilisation de lannotation @WebService


est ncessaire (utilisation de valeurs par dfaut) 55
Annotation @WebSERVICE
Annote une classe Java pour dfinir limplmentation du
Service Web
Annote une interface Java pour dfinir la description du
Service Web
Attributs de lannotation @WebService
o String name : nom du Service Web
o String endpointInterface : nom de linterface dcrivant le
Service Web
o String portName : nom du port
o String serviceName : nom du service du Service Web
o String targetNamespace : le namespace du Service Web
o String wsdlLocation : lemplacement du WSDL dcrivant le 56
Service Web
Annotation @Webmethod
Annote une mthode dune classe Java expose comme une
opration du Service Web
Attributs de lannotation : @WebMethod
o String action : laction de lopration. Dans le cas dun
binding SOAP, cela dtermine la valeur de laction SOAP

o boolean exclude: prcise que la mthode ne doit pas tre


expose comme une opration. Ne pas utiliser dans une
interface Java

o String operationName : prcise le nom de lattribut name


dfini dans llment operation du document WSDL
57
Annotation @Webparam
Dcrit la relation entre un paramtre dentre dune
mthode et un message part dune opration
Attributs de lannotation
o boolean header : prcise si le paramtre doit tre transmis
dans len-tte du message (true ) ou dans le corps (false)
o WebParam.Mode mode : prcise le type daccs au
paramtre (IN, OUT ou INOUT)
o String name : nom du paramtre
o String partName : le nom du wsdl:part reprsentant ce
paramtre
o String targetNamespace : lespace de nommage de ce
paramtre
58
Annotation @Webresult
Dcrit la relation entre le paramtre de sortie dune
mthode et un message part dune opration
Attributs de lannotation
o boolean header : prcise si le paramtre de sortie doit tre
transmis dans len-tte du message (true) ou dans le corps
(false)
o String name: nom du paramtre de sortie
o String partName: le nom du wsdl:part reprsentant ce
paramtre de sortie
o String targetNamespace: lespace de nommage de ce
paramtre de sortie

59
Et concrtement a donne quoi?
Vous allez faire le TP qui est divis en deux parties:
1. Tester des services web existants
2. Cration et dploiement de services web
Java
LIDE Netbeans
Le serveur dapplications Glassfish

Serveur dapplication
60

Les web services Ingnierie systmes CLIENT (utilisateur)


Jonathan Fontanel, Philippe Lacomme, Libo Ren

S-ar putea să vă placă și