Vous êtes sur la page 1sur 53

Mineure Architectures Orientes Services SOA Web Services

Mineure SOA
Web Services
Idir AIT SADOUNE
idir.aitsadoune@supelec.fr

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Plan
Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.

Dfinition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implmentation des Web Services

Les Web Services WS-*


1.
2.
3.
4.

Standards et acteurs
Principales technologies : WSDL, SOAP, UDDI
Exposer une application Java sous la forme d'un Web Service WS-*
Appeler un Web Service WS-* en Java

Les Web Services RESTful


1.
2.
3.

vendredi 5 dcembre 2014

Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest ce quun Web Service


Dfinitions et principes

Web Service = Service + Web ?


o Service = fonctionnalit mise disposition et excute par un fournisseur
lorsqu'elle est invoque par un consommateur
rutilisable + composable + indpendant + granularit variable
o Interface :
o Dfinit l'usage du service (syntaxe, smantique, qualit) contrat
o Masque l'implmentation du service pour un couplage consommateur/fournisseur faible

o Format pivot : langage commun pour dcrire et changer les donnes

o Web Service = service mis disposition sur Internet


o
o
o
o

Associ une URL sur le web


HTTP
Accessible via des protocoles internet standard
Accessible indpendamment des technologies dimplmentation
Auto-descriptif
XML

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest ce quun Web Service


Dfinitions et principes

Principe des Web Services


Annuaire de services

Dcouverte

HTTP +
XML

Publication

Client

Fournisseur

Internet
Application

Web Service

Utilisation

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Interface

Mineure Architectures Orientes Services SOA Web Services

Quest ce quun Web Service


Dfinitions et principes

Utilisation dun Web Service


Fournisseur

Annuaire

Client

Enregistrement

Dploiement
du service

Recherche du service A
Voici ladresse du serveur
qui hberge A
Quel format utiliser pour le service A ?
Contrat de service
Requte
Rponse
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

HTTP +
XML
5

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le protocole HTTP

HTTP (Hyper Text Transfer Protocol)


o Protocole de communication ddi au web
o Chaque ressource du web est identifie par une URL

o Mode de communication = requte / rponse


o Requte
o Mthode de requte + nom ressource
o Lecture : GET, HEAD
o Modification : POST, PUT, DELETE

o En-tte : nom du serveur,

o Rponse
o En-tte : code de statut, type
de serveur, type de contenu
o Contenu de la ressource demande

o Non conservation de ltat


entre deux couples requte/rponse
vendredi 5 dcembre 2014

GET /index.html HTTP/1.1


Host: www.example.com

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7
Last-Modified: Wed, 08 Jan 2003 23:11:55
GMT Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le protocole HTTP

Exemple
o Accs en lecture une page web pour affichage dans un navigateur

Serveur web
www.free.fr

Client

1 Requte :
GET http://idir.aitsadoune.free.fr/index. html
3 Affichage :
interprtation
HTML

\htdocs\idir.aitsadoune\

HTML
HTML
index. html

2 Rponse :
contenu de index.html
index. html

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le protocole HTTP

Multipurpose Internet Mail Extension


o MIME : Standard dfinissant le type et le format de contenus changs sur internet
o Contenu textuel : langue, codage des caractres
o Contenu multimdia (images, sons, films) : type de mdia
o Transfert sous forme binaire

o Contenus multiples (pices jointes)

o Utilis pour les emails avec SMTP


o Utilis pour le web avec HTTP
o En-tte : Content-Type: type/sous-type
o
o
o
o

text/xml
audio/mpeg
image/jpeg
application/pdf

vendredi 5 dcembre 2014

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7
Last-Modified: Wed, 08 Jan 2003 23:11:55
GMT Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le langage XML

XML (eXtensible Markup Language)


o Standard du W3C depuis 1998
o XML = langage permettant de structurer des donnes de manire logique
o Extensible
o Indpendant des plates-formes et des systmes dexploitation
o Concernant uniquement le contenu, pas la forme (apparence)

o Document XML = structure arborescente auto-descriptive


o Structure des donnes = balises personnalises ( tags )
o Donnes = texte
personne

prenom

nom

Gaston

Lagaffe

date_naissance

compagnie
vendredi 5 dcembre 2014

adresse

boite_postale

ville

poids

taille

unite

180

cm

code_postal pays

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le langage XML

Exemple de document XML


<?xml version="1.0" encoding="UTF-8"?>
<personne>
<prenom>Gaston</prenom>
<nom>Lagaffe</nom>
<date_naissance>30/03/1976</date_naissance>
<adresse>
<compagnie>Journal Spirou</compagnie>
<boite_postale>355</ boite_postale >
<ville>Paris Cedex</ville>
<code_postal>75116</ code_postal >
<pays code="ISO-3166">FR</pays>
</adresse>
<taille unite="cm">180</taille>
<poids unite="kg">70</ poids >
</personne>

prenom

nom

Gaston

Lagaffe

date_naissance

compagnie
vendredi 5 dcembre 2014

personne

adresse

boite_postale

ville

poids

taille

unite

180

cm

code_postal pays

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

10

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Rappels sur le langage XML

Validit dun document XML


o Grammaire = dfinition dun vocabulaire valide et de rgles de structure
o Pour XML, grammaire = schma
o Dfinit les balises et leurs attributs
o Dfinit les contraintes de structure des documents

o XML Schema (XSD) = un des langages de description de schmas


<xsd:element name="personne">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prenom" type="xsd:string"/>
<xsd:element name="nom" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<personne>
<prenom>Gaston</prenom>
<nom>Lagaffe</nom>
</personne>

o Espace de noms = prfixe permettant dliminer les conflits lorsque plusieurs


balises ont des noms identiques, URL (fictive) utilise comme identifiant
<liv:auteur xmlns:liv="http://livres"></liv:auteur>

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

11

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Implmentation des Web Services

Implmentation (hors annuaire)


Client
Application

Fournisseur
Internet

Web Service

Interface

o Implmentation ct client et ct fournisseur :


o Application mtier
toutes technologies possibles (Java, .NET, PHP)
o Traitements lis au protocole, bas sur HTTP/XML
deux grandes familles : famille WS-* et famille RESTful

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

12

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Implmentation des Web Services

Ct fournisseur
Client

Fournisseur
Internet

Application

Web Service

Interface

o Pour crer un Web Service :


1.
2.
3.
4.
5.

Dfinir le contrat du service


Dvelopper le service
Dvelopper la couche de traitement XML
Dployer sur le serveur
Publier dans lannuaire

vendredi 5 dcembre 2014

Suivant les technologies, certaines


tches sont automatises

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

13

Mineure Architectures Orientes Services SOA Web Services

Quest-ce quun Web Service


Implmentation des Web Services

Ct client
Client

Fournisseur
Internet

Application

Web Service

Interface

o Pour crer une application cliente :


1.
2.
3.
4.
5.

Rechercher le service dans l'annuaire


Suivant les technologies, certaines
Rcuprer le contrat du service
tches sont automatises
Crer un stub/proxy
Dvelopper la couche de traitement XML
Utiliser le service et prsenter les rsultats (rendu)

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

14

Mineure Architectures Orientes Services SOA Web Services

Plan
Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.

Dfinition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implmentation des Web Services

Les Web Services WS-*


1.
2.
3.
4.

Standards et acteurs
Principales technologies : WSDL, SOAP, UDDI
Exposer une application Java sous la forme d'un Web Service WS-*
Appeler un Web Service WS-* en Java

Les Web Services RESTful


1.
2.
3.

vendredi 5 dcembre 2014

Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

15

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Standards et acteurs

Principales technologies
Annuaire de services

SOAP/UDDI
Dcouverte

SOAP/UDDI
Publication

Client

Fournisseur
Internet

Application

Web Service

Utilisation
SOAP
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Interface

WSDL
16

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Standards et acteurs

Galaxie des standards WS-*

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

17

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Standards et acteurs

Acteurs majeurs
o W3C (World Wide Web Consortium)
o Consortium acadmique international fond en 1994
o Principal organisme de standardisation concernant le web
o HTTP, URI, HTML, XML

o A lorigine des technologies qui forment la base des Web Services


o SOAP, WSDL

o Mcanisme de recommandations

o OASIS (Organization for the Advancement of Structured Information Standards)


o Consortium international dditeurs de logiciel
o Objectif = dveloppement, convergence et adoption de standards e-business
o Organisme le plus productif dans le domaine des Web Services :
o UDDI, BPEL, WSRP, WS-Security, SAML, WS-Transactions

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

18

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI
Dcouverte

SOAP/UDDI
Publication

Client

Fournisseur
Internet

Application

Web Service

Utilisation
SOAP

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Interface

WSDL
19

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

WSDL (Web Service Description Language)


o Standard du W3C
o Version 1.1 en 2001
o Version 2.0 en 2007, encore peu support par les outils

o Objectif = dcrire l'interface publique d'un Web Service (contrat de service)


o Grammaire drive dXML

o Interface dun Web Service avec WSDL


o Web Service = ensemble de ports de connexions mettant disposition des oprations
qui reoivent et envoient des messages
o Deux types dinformations
o Fonctionnelles : interface du service (signature des mthodes)
o Techniques : URL, protocole

o Fichier WSDL utilisable par des outils de gnration de code


vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

20

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Structure dun fichier WSDL 1.1


Service
Informations
techniques

Nom et adresse (URL)


du service

Port

Port

Binding

Binding

Protocole de transport et
format des messages

PortType
Operation

Interface
du service
(fonctionnelle)

Input

Operation
Output
Message

Part
vendredi 5 dcembre 2014

Noms, types et ordre des paramtres

Part

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Type
Type
Type
21

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Structure dun fichier WSDL 1.1


<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<types> [] </types>
<message []><part []/></message>

<portType []>
<operation []>
<input [] />
<output [] />
</operation>
</portType>

Interface
du service
(fonctionnelle)

<binding []>[]</binding>
<service []>
<port []>[]</port>
</service>

Informations
techniques

</definitions>
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

22

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple dinterface de service


o Avec des types simples
<portType name="Hello">
<operation name="sayHello">
<input message="tns:sayHello" />
<output message="tns:sayHelloResponse" />
</operation>
</portType>
<message name="sayHello">
<part name="n" type="xsd:string" />
</message>
<message name="sayHelloResponse">
<part name="return" type="xsd:string" />
</message>

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

23

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple dinterface de service


o Avec des types complexes
o Dclars dans un fichier XSD (XMLSchema) spar
o Ou dclars dans le fichier WSDL
<part name="parameters"

element="sayHello" />

<xsd:element name="sayHello" >


<xsd:complexType>
<xsd:sequence>
<xsd:element name="n" type="xs:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

Attention aux espaces de noms !


vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

24

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple dinformations techniques


<binding name="HelloPortBinding" type="tns:Hello">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>

<service name="HelloService">
<port name="HelloPort" binding="tns:HelloPortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

25

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI
Dcouverte

SOAP/UDDI
Publication

Client

Fournisseur
Internet

Application

Web Service

Utilisation
SOAP
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Interface

WSDL
26

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

SOAP (Simple Object Access Protocol)


o Standard du W3C
o Version1.2 en 2003

o Objectif = formater les requtes et les rponses changes entre client et Web
Service pour le transport (notamment sur HTTP)
o Grammaire drive dXML
<Envelope>

o Dfinit principalement
o Un modle de structure pour les requtes et
les rponses (messages)
o Envelope : obligatoire, dfinit un message SOAP
o Header : optionnel, informations non applicatives
(scurit) ou destines aux intermdiaires
o Body : dcrit la requte ou la rponse

<Header>
<transId>1234</transId>
</Header>
<Body>
<add>
<varx>3</varx>
<vary>4</varY>
</add>
</Body>
</Envelope>

o Un modle de traitement des messages


vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

27

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

SOAP : Exemple
o Requte : sayHello("Robert")
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns:sayHello xmlns:ns="http://hello/">
<n>Robert</n>
</ns:sayHello>
</soap:Body>
</soap:Envelope>

o Rponse : "Hello dear Robert !"


<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns:sayHelloResponse xmlns:ns="http://hello/">
<return>Hello dear Robert !</return>
</ns:sayHelloResponse>
</soap:Body>
</soap:Envelope>
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

28

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI
Dcouverte

SOAP/UDDI
Publication

Client

Fournisseur
Internet

Application

Web Service

Utilisation
SOAP
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

Interface

WSDL
29

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

UDDI
o UDDI : Unversal Discovery Description and Integration
o Standard port par un consortium dindustriels
o Version 3 en 2005

o Objectif = publication et dcouverte de Web Services sur un rseau


o Dfinit :
o UDDI Business Registry (UBR) = annuaire pour permettre d'automatiser les
communications entre prestataires, clients, etc. (orient business )
o Mthodes de publications (bases sur SOAP)
o Mthodes de consultation (bases sur SOAP)
Pages blanches

Pages jaunes

Nom de la socit
Information sur les contacts
Description texte
Identifications (DUNS, SIRET, etc.)

vendredi 5 dcembre 2014

Index services et produits


Code dindustrie (APE, etc.)
Index gographique
Taxonomie

Pages vertes
Procdures e-business
Descriptions technique des services
Paramtres des services

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

30

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Publication dun service


o Le rfrencement du service est important !!!
o Diffrents types de registres
o Registre public (seekda.com, xmethods.net)
o Registre de branche
o Registre priv
o A lheure actuelle les registres sont majoritairement privs
(internes aux entreprises)

o Indexation par une ou plusieurs catgories dans la taxonomie du registre

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

31

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Principales technologies : WSDL, SOAP, UDDI

Et les autres WS-* ?

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

32

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

Implmentation WS-* avec Java


Serveur
d'Applications
Java EE

Client

Fournisseur
Internet

Application

Web Service

SOAP/HTTP

Interface

Java
JAX-WS
+JAXB

vendredi 5 dcembre 2014

WSDL

Java
JAX-WS
+JAXB

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

33

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

Cration dun Web Service avec Java EE


o Web Service = classe + annotations
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(serviceName="HelloService")
public class HelloService {
@WebMethod(operationName="sayHello")
public String sayHello(@WebParam(name="n") String n) {
return "Hello dear "+n+" !";
}
}

vendredi 5 dcembre 2014

Correspondance
annotation WSDL
= JAX-WS

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

34

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

JAX-WS (Java API for XML Web Services)


o Objectif = conversion WSDL Java et SOAP Java
1. Correspondance automatique Classe (ou interface) Java WSDL
o Gnration de contrat (ct fournisseur ou client)

2. Correspondance automatique WSDL Java


o Gnration dun squelette de service partir de son contrat
o Gnration dun stub ct client

3. Transformation automatiquement appel de mthode Java message SOAP

o Ct fournisseur, le serveur d'application excute les oprations JAX-WS


o JAX-WS s'appuie sur JAX-B pour le traitement du XML
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

35

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

Objets passs en XML : JAXB


o JAXB : Java Architecture for XML Binding
o Objectif = conversion XM L Java

o Donnes ncessaires :
o Schma XML Schema
o ou classes Java annotes

o Oprations supportes :
o Compilation : XML Schma classe Java annote
o Excution : objet Java reprsentation XML
= marshalling/unmarshalling
o Validation

Source : The Java EE 5 Tutorial


vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

36

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

Exemple avec JAXB


@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Product{
<?xml version="1.0" encoding="UTF-8"?>
<product>
@XmlElement
<name>GPS TomTom Go Live 825M</name>
private String name;
<price>216.0</price>
@XmlElement
private Double price; </product>
public Product(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

37

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Exposer une application Java sous la forme dun Web Service WS-*

Code first vs Contract first


o Principe =

o Principe =
1. Implmenter la logique mtier
2. Gnrer automatiquement le contrat
WSDL pour le publier

1. Ecrire le contrat WSDL


2. Implmenter la logique mtier
o Possibilit de gnrer le squelette de code
de la logique mtier partir du contrat

o Avantages

o Avantages
o Simple raliser
o Utilit pour exposer du code legacy,
ou pour faire des tests

o Inconvnients

o Meilleur dcouplage interface


implmentation, stabilit du WSDL
o Meilleures performances gnralement

o Inconvnients
o Plus complexe raliser

o Variations dans le contrat gnr


o Dpendance entre le code et
le contrat
o Dveloppement de lapplication
cliente aprs dveloppement du
service
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

38

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Appeler un Web Service WS-* en Java

Implmentation WS-* avec Java


Serveur
d'Applications
Java EE

Client

Fournisseur
Internet

Application

Web Service

SOAP/HTTP

Interface

Java
JAX-WS
+JAXB

vendredi 5 dcembre 2014

WSDL

Java
JAX-WS
+JAXB

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

39

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Appeler un Web Service WS-* en Java

Client dun Web Service


o Comme en RMI :
stub/proxy = reprsentation du service dans lespace du client,
composant local qui dlguera les appels au composant distant
o Types de proxy :

JAX-WS

o Stub statique : classes gnres partir du WSDL


o Proxy dynamique : classes gnres l'excution
partir du WSDL
o Dynamic Invocation Interface (DII) :
dcouverte dynamique du service l'excution

o Configuration : login / mot de passe, cl

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

40

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Appeler un Web Service WS-* en Java

Cration dun client avec Java


o Crer/rcuprer une interface Java reprsentant le service
@WebService
public interface HelloService {
@WebMethod
public String sayHello(@WebParam(name = "n") String n);
}

Il est possible
de gnrer
automatiqueme
nt un client :
voir les
exercices

o A l'aide de JAX-WS, se connecter au service et appeler ses oprations :


// Creation du stub
URL wsdlURL = new URL("http://localhost:8080/HelloWebService/HelloService?WSDL");
QName serviceName = new QName("http://hello/", "HelloService");
Service serviceClient = Service.create(wsdlURL, serviceName);

QName portName = new QName("http://hello/", "HelloServicePort");


HelloService portStub = serviceClient.getPort(portName, HelloService.class);
System.out.println("portStub : "+portStub);

// Envoi d'une requte


System.out.println("rponse = " + portStub.sayHello("tutu tata"));
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

41

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Appeler un Web Service WS-* en Java

Implmentation WS-* avec Java


Serveur
d'Applications
Java EE

Client

Fournisseur
Internet

Application

Web Service

SOAP/HTTP

Interface

Java
JAX-WS
+JAXB

vendredi 5 dcembre 2014

WSDL

Java
JAX-WS
+JAXB

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

42

Mineure Architectures Orientes Services SOA Web Services

Les Web Services WS-*


Appeler un Web Service WS-* en Java

Problmatique de linteroprabilit
o Problme = variations dans les implmentations des standards
o WS-I (Web Service Interoperability)
o Consortium dditeurs de logiciels
o Objectif = assurer linteroprabilit
entre les implmentations des normes
lies aux Web Services
o Produit

STAN D ARD S
SPECI FI CATI ON S

BESOI N S

GUI D E
D I M PLEM EN TATI ON

BESOI N S

o Des profils = ensembles de standards


implmenter + guides
o Des exemples dapplications
o Des outils de test

EN TREPRI SES, D EVELOPPEURS, UTI LI SATEURS FI N AUX

o WSIT (Web Services Interoperability Technologies)


o Implmentation Java open source de certaines spcifications WS-* slectionnes par
WS-I et interoprables avec le WCF de .NET
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

43

Mineure Architectures Orientes Services SOA Web Services

Plan
Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.

Dfinition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implmentation des Web Services

Les Web Services WS-*


1.
2.
3.
4.

Standards et acteurs
Principales technologies : WSDL, SOAP, UDDI
Exposer une application Java sous la forme d'un Web Service WS-*
Appeler un Web Service WS-* en Java

Les Web Services RESTful


1.
2.
3.

vendredi 5 dcembre 2014

Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

44

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Principes

REST (Representational State Transfert)


o REST = style darchitecture orient ressources semblable celui du web
o Ressource = information qui peut tre identifie de manire unique
et rfrence par un lien
o Identifiant unique pour le web : URI
o Plusieurs rendus possibles pour le web : HTML, XML

o Oprations CRUD sur les ressources = Create, Read, Update, Delete


pour le web, oprations HTTP

o Objectif de l'architecture REST pour les Web Services :


simplifier lutilisation par rapport aux WS-*
o
o
o
o

Moins de standards matriser et implmenter


Messages moins verbeux
Utilisation moins couteuse

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

45

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Principes

RESTful Web Services


o Web Service = ressource avec une URI logique comme identifiant
o URI obtenue par hirarchie : http://supermarche.fr/produitsfrais/fruits/raisin
o URI obtenue par construction : http://geographie.fr/altitude?lat=36&lon=10

o Oprations CRUD = oprations HTTP (requtes/rponses)


o
o
o
o

PUT = Create = cration de la ressource


GET = Read = lecture de la valeur de la ressource
POST = Update = modification de la valeur de la ressource
DELETE = Delete = destruction de la ressource

o Contraintes de conception :
o Oprations idempotentes
o Pas de session client-serveur (mais le client ou le serveur peut tre stateful)

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

46

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Principes

RESTful Web Services : Exemple de requte


o Requte HTTP GET
http://open.mapquestapi.com/nominatim/v1/reverse?
format=xml&lat=48.7099500104522&lon=2.16758762635404

o Equivalent SOAP
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<serv:reverse
xmlns:serv="http://open.mapquestapi.com/nominatim/v1/">
<format>xml</format>
<lat>48.7099500104522</lat>
<lon>2.16758762635404</lon>
</serv:reverse >
</soap:Body>
</soap:Envelope>

o Les URLs peuvent tre gnres par des formulaires HTML !


vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

47

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Principes

RESTful Web Services : Exemple de rponse


o Rponse HTTP standard
o Chaine de caractres reprsentant le rsultat de lopration
o Ou document XML reprsentant la ressource
<?xml version="1.0" encoding="UTF-8" ?>

<addressparts>
<bus_stop>Le Moulon</bus_stop>
<road>Rue Joliot-Curie</road>
<suburb>Montjay</suburb>
<city>Gif-sur-Yvette</city>
<administrative>Palaiseau</administrative>
<county>Essonne</county>
<state>le-de-France</state>
<postcode>91400</postcode>
<country>France mtropolitaine</country>
<country_code>fr</country_code>
</addressparts>
</reversegeocode>
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

48

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Appeler un Web Service RESTful

Client dun service REST

vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

49

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Appeler un Web Service RESTful

Client dun service REST :Exemple avec Java


// Prparation de la connexion
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxy.supelec.fr", 8080));
URL url = new URL("http://localhost:8080/HelloREST/resources/helloREST");
HttpURLConnection connexion = (HttpURLConnection) url.openConnection(proxy);
// Envoi de la requte
connexion.setRequestMethod("GET");
connexion.connect(); // send GET request
// Rcupration du contenu de la rponse
System.out.println("Rponse :");
InputStream stream = connexion.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(stream));
String line;
while((line = r.readLine()) != null){
System.out.println(line);
}
// Dconnexion
connexion.disconnect();
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

50

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Exposer une application Java sous la forme dun Web Service RESTful

Service REST : Exemple avec Java


@Path("/helloREST")
public class HelloResource {
private String name;
public HelloResource(){
this.name="Robert";
}

Chemin d'accs de la ressource

Mapping des oprations HTTP sur des


mthodes de la classe + type MIME du
contenu produit/consomm (important)

@GET
@Produces("text/plain")
public String getHello() {
return "Hello "+this.getName()+" !";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

51

Mineure Architectures Orientes Services SOA Web Services

Les Web Services RESTful


Exposer une application Java sous la forme dun Web Service RESTful

Service REST : Autres mthodes HTTP


@Path("/helloREST")
@Singleton
public class HelloResource {
private String name;

Composant EJB ayant une instance unique,


dont le rle est de "mmoriser"
la chane de caractre "name"

public HelloResource(){
this.name="Robert";
}
@GET
@Produces("text/plain")
public String getHello() {
return "Hello "+this.getName()+" !";
}

Opration POST pour modifier la ressource

@POST
+ consomme et produit du texte
@Consumes("text/plain")
@Produces("text/plain")
public String putHello(String content) {
this.setName(content);
return "New name = "+this.getName();
}

}
vendredi 5 dcembre 2014

Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr>

52

Vous aimerez peut-être aussi