Vous êtes sur la page 1sur 53

Mineure Architectures Orientées Services SOA – Web Services

Mineure SOA
Web Services

Idir AIT SADOUNE


idir.aitsadoune@supelec.fr

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


Mineure Architectures Orientées Services SOA – Web Services

Plan
① Qu'est-ce qu'un Web Service ?
1. Définition et principe
2. Rappels sur le protocole HTTP
3. Rappels sur le langage XML
4. Implémentation des Web Services

② Les Web Services WS-*


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

③ Les Web Services RESTful


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

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 2


Mineure Architectures Orientées Services SOA – Web Services
Qu’est ce qu’un Web Service
Définitions et principes

Web Service = Service + Web ?


o Service = fonctionnalité mise à disposition et exécutée par un fournisseur
lorsqu'elle est invoquée par un consommateur
réutilisable + composable + indépendant + granularité variable
o Interface :
o Définit l'usage du service (syntaxe, sémantique, qualité) ☛ contrat
o Masque l'implémentation du service pour un couplage consommateur/fournisseur faible
o Format pivot : langage commun pour décrire et échanger les données

o Web Service = service mis à disposition sur Internet


o Associé à une URL sur le web
HTTP
o Accessible via des protocoles internet standard
o Accessible indépendamment des technologies d’implémentation
o Auto-descriptif
XML

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 3


Mineure Architectures Orientées Services SOA – Web Services
Qu’est ce qu’un Web Service
Définitions et principes

Principe des Web Services


Annuaire de services
HTTP +
XML

Découverte Publication

Client Fournisseur
Internet
Application Web Service

Utilisation Interface

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 4


Mineure Architectures Orientées Services SOA – Web Services
Qu’est ce qu’un Web Service
Définitions et principes

Utilisation d’un Web Service


Client Annuaire Fournisseur

Déploiement
Enregistrement du service
Recherche du service A

Voici l’adresse du serveur


qui héberge A

Quel format utiliser pour le service A ?

Contrat de service

Requête
HTTP +
Réponse XML

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 5


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Rappels sur le protocole HTTP

HTTP (Hyper Text Transfer Protocol)


o Protocole de communication dédié au web
o Chaque ressource du web est identifiée par une URL

o Mode de communication = requête / réponse


o Requête
o Méthode de requête + nom ressource GET /index.html HTTP/1.1
o Lecture : GET, HEAD… Host: www.example.com
o Modification : POST, PUT, DELETE…
o En-tête : nom du serveur, … HTTP/1.1 200 OK
o Réponse Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7
o En-tête : code de statut, type Last-Modified: Wed, 08 Jan 2003 23:11:55
de serveur, type de contenu… GMT Etag: "3f80f-1b6-3e1cb03b"
o Contenu de la ressource demandée Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
o Non conservation de l’état
entre deux couples requête/réponse
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 6
Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Rappels sur le protocole HTTP

Exemple
o Accès en lecture à une page web pour affichage dans un navigateur

Serveur web
Client www.free.fr

1 – Requête :
…\htdocs\idir.aitsadoune\
GET http://idir.aitsadoune.free.fr/index. html
3 – Affichage : HTML
interprétation HTML
HTML
2 – Réponse :
index. html contenu de index.html
index. html

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 7


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Rappels sur le protocole HTTP

Multipurpose Internet Mail Extension


o MIME : Standard définissant le type et le format de contenus échangés sur internet
o Contenu textuel : langue, codage des caractères…
o Contenu multimédia (images, sons, films…) : type de média…
o Transfert sous forme binaire
o Contenus multiples (pièces jointes…)

o Utilisé pour les emails avec SMTP


o Utilisé pour le web avec HTTP
o En-tête : « Content-Type: type/sous-type »
o text/xml HTTP/1.1 200 OK
o audio/mpeg Date: Mon, 23 May 2005 22:38:34 GMT
o image/jpeg Server: Apache/1.3.3.7
Last-Modified: Wed, 08 Jan 2003 23:11:55
o application/pdf
GMT Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 8
Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Rappels sur le langage XML

XML (eXtensible Markup Language)


o Standard du W3C depuis 1998
o XML = langage permettant de structurer des données de manière logique
o Extensible
o Indépendant des plates-formes et des systèmes d’exploitation
o Concernant uniquement le contenu, pas la forme (apparence)

o Document XML = structure arborescente auto-descriptive


o Structure des données = balises personnalisées (« tags »)
o Données = texte
personne

prenom nom date_naissance adresse poids taille unite

Gaston Lagaffe 180 cm


compagnie boite_postale ville code_postal pays

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 9


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un 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>
personne

prenom nom date_naissance adresse poids taille unite

Gaston Lagaffe 180 cm


compagnie boite_postale ville code_postal pays

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 10


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Rappels sur le langage XML

Validité d’un document XML


o Grammaire = définition d’un vocabulaire valide et de règles de structure
o Pour XML, grammaire = schéma
o Définit les balises et leurs attributs
o Définit les contraintes de structure des documents
o XML Schema (XSD) = un des langages de description de schémas
<xsd:element name="personne">
<xsd:complexType>
<xsd:sequence> <personne>
<xsd:element name="prenom" type="xsd:string"/> <prenom>Gaston</prenom>
<xsd:element name="nom" type="xsd:string"/> <nom>Lagaffe</nom>
</xsd:sequence> </personne>
</xsd:complexType>
</xsd:element>

o Espace de noms = préfixe permettant d’éliminer les conflits lorsque plusieurs


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

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 11


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Implémentation des Web Services

Implémentation (hors annuaire)


Client Fournisseur

Application Internet Web Service

Interface

o Implémentation côté client et côté fournisseur :

o Application « métier »
☛ toutes technologies possibles (Java, .NET, PHP…)
o Traitements liés au protocole, basé sur HTTP/XML
☛ deux grandes familles : famille WS-* et famille RESTful

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 12


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Implémentation des Web Services

Côté fournisseur
Client Fournisseur

Application Internet Web Service

Interface

o Pour créer un Web Service :


1. Définir le contrat du service
Suivant les technologies, certaines
2. Développer le service
tâches sont automatisées…
3. Développer la couche de traitement XML
4. Déployer sur le serveur
5. Publier dans l’annuaire

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 13


Mineure Architectures Orientées Services SOA – Web Services
Qu’est-ce qu’un Web Service
Implémentation des Web Services

Côté client
Client Fournisseur

Application Internet Web Service

Interface

o Pour créer une application cliente :


1. Rechercher le service dans l'annuaire
Suivant les technologies, certaines
2. Récupérer le contrat du service
tâches sont automatisées…
3. Créer un stub/proxy
4. Développer la couche de traitement XML
5. Utiliser le service et présenter les résultats (rendu)

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 14


Mineure Architectures Orientées Services SOA – Web Services

Plan
① Qu'est-ce qu'un Web Service ?
1. Définition et principe
2. Rappels sur le protocole HTTP
3. Rappels sur le langage XML
4. Implémentation des Web Services

② Les Web Services WS-*


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

③ Les Web Services RESTful


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

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 15


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Standards et acteurs

Principales technologies
Annuaire de services

SOAP/UDDI SOAP/UDDI
Découverte Publication

Client Fournisseur
Internet
Application Web Service

Utilisation Interface
SOAP
WSDL
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 16
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Standards et acteurs

« Galaxie » des standards WS-*

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 17


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Standards et acteurs

Acteurs majeurs
o W3C (World Wide Web Consortium)
o Consortium académique international fondé en 1994
o Principal organisme de standardisation concernant le web
o HTTP, URI, HTML, XML…
o A l’origine des technologies qui forment la base des Web Services
o SOAP, WSDL
o Mécanisme de recommandations

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


o Consortium international d’éditeurs de logiciel
o Objectif = développement, 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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 18


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI SOAP/UDDI
Découverte Publication

Client Fournisseur
Internet
Application Web Service

Utilisation Interface
SOAP
WSDL

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 19


Mineure Architectures Orientées 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 = décrire l'interface publique d'un Web Service (contrat de service)


o Grammaire dérivée d’XML

o Interface d’un Web Service avec WSDL


o Web Service = ensemble de ports de connexions mettant à disposition des opérations
qui reçoivent et envoient des messages
o Deux types d’informations
o Fonctionnelles : interface du service (signature des méthodes…)
o Techniques : URL, protocole…

o Fichier WSDL utilisable par des outils de génération de code

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 20


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Structure d’un fichier WSDL 1.1


Service
Nom et adresse (URL)
du service
Informations
Port Port
techniques

Protocole de transport et
Binding Binding format des messages

PortType

Operation Operation

Interface
du service Input Output
(fonctionnelle)
Message Noms, types et ordre des paramètres
Type
Type
Part Part Type
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 21
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Structure d’un 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 […]>
Interface
<operation […]>
du service
<input […] />
(fonctionnelle)
<output […] />
</operation>
</portType>

<binding […]>[…]</binding>
Informations
<service […]>
techniques
<port […]>[…]</port>
</service>

</definitions>
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 22
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple d’interface 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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 23


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple d’interface de service


o Avec des types complexes
o Déclarés dans un fichier XSD (XMLSchema) séparé
o Ou déclarés 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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 24


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

WSDL : exemple d’informations 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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 25
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI SOAP/UDDI
Découverte Publication

Client Fournisseur
Internet
Application Web Service

Utilisation Interface
SOAP
WSDL

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 26


Mineure Architectures Orientées 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 requêtes et les réponses échangées entre client et Web
Service pour le transport (notamment sur HTTP)
o Grammaire dérivée d’XML
<Envelope>
o Définit principalement <Header>
o Un modèle de structure pour les requêtes et <transId>1234</transId>
</Header>
les réponses (messages)
o Envelope : obligatoire, définit un message SOAP <Body>
<add>
o Header : optionnel, informations non applicatives <varx>3</varx>
(sécurité…) ou destinées aux intermédiaires <vary>4</varY>
</add>
o Body : décrit la requête ou la réponse </Body>

</Envelope>
o Un modèle de traitement des messages

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 27


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

SOAP : Exemple
o Requête : 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 Réponse : "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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 28
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Principales technologies
Annuaire de services

SOAP/UDDI SOAP/UDDI
Découverte Publication

Client Fournisseur
Internet
Application Web Service

Utilisation Interface
SOAP
WSDL
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 29
Mineure Architectures Orientées 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 d’industriels
o Version 3 en 2005

o Objectif = publication et découverte de Web Services sur un réseau

o Définit :
o UDDI Business Registry (UBR) = annuaire pour permettre d'automatiser les
communications entre prestataires, clients, etc. (orienté « business »)
o Méthodes de publications (basées sur SOAP)
o Méthodes de consultation (basées sur SOAP)

Pages blanches Pages jaunes Pages vertes


 Nom de la société  Index services et produits  Procédures e-business
 Information sur les contacts  Code d’industrie (APE, etc.)  Descriptions technique des services
 Description texte  Index géographique  Paramètres des services
 Identifications (DUNS, SIRET, etc.)  Taxonomie

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 30


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Publication d’un service


o Le référencement du service est important !!!

o Différents types de registres


o Registre public (seekda.com, xmethods.net…)
o Registre de branche
o Registre privé

o A l’heure actuelle les registres sont majoritairement privés


(internes aux entreprises)

o Indexation par une ou plusieurs catégories dans la taxonomie du registre

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 31


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Principales technologies : WSDL, SOAP, UDDI

Et les autres WS-* ?

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 32


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un Web Service WS-*

Implémentation WS-* avec Java


Serveur
d'Applications
Java EE

Client Fournisseur

Application Internet Web Service

SOAP/HTTP

Interface

Java Java
JAX-WS WSDL JAX-WS
+JAXB +JAXB

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 33


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un Web Service WS-*

Création d’un 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+" !";
}
}
Correspondance
annotation ⬌ WSDL
= JAX-WS

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 34


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un 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 Génération de contrat (côté fournisseur ou client)
2. Correspondance automatique WSDL ➜ Java
o Génération d’un squelette de service à partir de son contrat
o Génération d’un stub côté client
3. Transformation automatiquement appel de méthode Java ⬌ message SOAP

o Côté fournisseur, le serveur d'application exécute les opérations JAX-WS

o JAX-WS s'appuie sur JAX-B pour le traitement du XML

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 35


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un Web Service WS-*

Objets passés en XML : JAXB


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

o Données nécessaires :
o Schéma XML Schema
o ou classes Java annotées

o Opérations supportées :
o Compilation : XML Schéma ⬌ classe Java annotée
o Exécution : objet Java ⬌représentation XML
= marshalling/unmarshalling
o Validation

Source : The Java EE 5 Tutorial

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 36


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un Web Service WS-*

Exemple avec JAXB


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

public Product(){…}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

}
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 37
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Exposer une application Java sous la forme d’un Web Service WS-*

Code first vs Contract first


o Principe = o Principe =
1. Ecrire le contrat WSDL
1. Implémenter la logique métier
2. Implémenter la logique métier
2. Générer automatiquement le contrat o Possibilité de générer le squelette de code
WSDL pour le publier de la logique métier à partir du contrat
o Avantages o Avantages
o Simple à réaliser o Meilleur découplage interface –
implémentation, stabilité du WSDL
o Utilité pour exposer du code legacy,
o Meilleures performances généralement
ou pour faire des tests
o Inconvénients
o Inconvénients o Plus complexe à réaliser
o Variations dans le contrat généré
o Dépendance entre le code et
le contrat
o Développement de l’application
cliente après développement du
service

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 38


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Appeler un Web Service WS-* en Java

Implémentation WS-* avec Java


Serveur
d'Applications
Java EE

Client Fournisseur

Application Internet Web Service

SOAP/HTTP

Interface

Java Java
JAX-WS WSDL JAX-WS
+JAXB +JAXB

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 39


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Appeler un Web Service WS-* en Java

Client d’un Web Service


o Comme en RMI :
☛ stub/proxy = représentation du service dans l’espace du client,
composant local qui délèguera les appels au composant distant

o Types de proxy : JAX-WS

o Stub statique : classes générées à partir du WSDL


o Proxy dynamique : classes générées à l'exécution
à partir du WSDL
o Dynamic Invocation Interface (DII) :
découverte dynamique du service à l'exécution

o Configuration : login / mot de passe, clé…

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 40


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Appeler un Web Service WS-* en Java

Création d’un client avec Java


o Créer/récupérer une interface Java représentant le service Il est possible
de générer
@WebService
public interface HelloService { automatiqueme
@WebMethod nt un client :
public String sayHello(@WebParam(name = "n") String n); voir les
} exercices…
o A l'aide de JAX-WS, se connecter au service et appeler ses opérations :
// 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 requête


System.out.println("réponse = " + portStub.sayHello("tutu tata"));

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 41


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Appeler un Web Service WS-* en Java

Implémentation WS-* avec Java


Serveur
d'Applications
Java EE

Client Fournisseur

Application Internet Web Service

SOAP/HTTP

Interface

Java Java
JAX-WS WSDL JAX-WS
+JAXB +JAXB

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 42


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Appeler un Web Service WS-* en Java

Problématique de l’interopérabilité
o Problème = variations dans les implémentations des standards

o WS-I (Web Service Interoperability)


o Consortium d’éditeurs de logiciels
o Objectif = assurer l’interopérabilité STAN D ARD S
SPECI FI CATI ON S BESOI N S

entre les implémentations des normes


liées aux Web Services
o Produit GUI D E
D ’I M PLEM EN TATI ON BESOI N S

o Des profils = ensembles de standards


à implémenter + guides
o Des exemples d’applications
o Des outils de test EN TREPRI SES, D EVELOPPEURS, UTI LI SATEURS FI N AUX

o WSIT (Web Services Interoperability Technologies)


o Implémentation Java open source de certaines spécifications WS-* sélectionnées par
WS-I et interopérables avec le WCF de .NET

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 43


Mineure Architectures Orientées Services SOA – Web Services

Plan
① Qu'est-ce qu'un Web Service ?
1. Définition et principe
2. Rappels sur le protocole HTTP
3. Rappels sur le langage XML
4. Implémentation des Web Services

② Les Web Services WS-*


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

③ Les Web Services RESTful


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

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 44


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Principes

REST (Representational State Transfert)


o REST = style d’architecture orienté ressources semblable à celui du web
o Ressource = information qui peut être identifiée de manière unique
et référencée par un lien
o Identifiant unique ➡ pour le web : URI
o Plusieurs rendus possibles ➡ pour le web : HTML, XML…

o Opérations CRUD sur les ressources = Create, Read, Update, Delete


➡ pour le web, opérations HTTP

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


simplifier l’utilisation par rapport aux WS-*
o Moins de standards à maîtriser et implémenter
o Messages moins verbeux
o Utilisation moins couteuse
o …

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 45


Mineure Architectures Orientées 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 hiérarchie : http://supermarche.fr/produitsfrais/fruits/raisin
o URI obtenue par construction : http://geographie.fr/altitude?lat=36&lon=10

o Opérations CRUD = opérations HTTP (requêtes/réponses)


o PUT = Create = création de la ressource
o GET = Read = lecture de la valeur de la ressource
o POST = Update = modification de la valeur de la ressource
o DELETE = Delete = destruction de la ressource

o Contraintes de conception :
o Opérations idempotentes
o Pas de session client-serveur (mais le client ou le serveur peut être stateful)

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 46


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Principes

RESTful Web Services : Exemple de requête


o Requête 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 générées par des formulaires HTML !

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 47


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Principes

RESTful Web Services : Exemple de réponse


o Réponse HTTP standard
o Chaine de caractères représentant le résultat de l’opération
o Ou document XML représentant 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 métropolitaine</country>
<country_code>fr</country_code>
</addressparts>
</reversegeocode>

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 48


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Appeler un Web Service RESTful

Client d’un service REST

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 49


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Appeler un Web Service RESTful

Client d’un service REST :Exemple avec Java


// Préparation 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 requête
connexion.setRequestMethod("GET");
connexion.connect(); // send GET request

// Récupération du contenu de la réponse


System.out.println("Réponse :");
InputStream stream = connexion.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(stream));
String line;
while((line = r.readLine()) != null){
System.out.println(line);
}

// Déconnexion
connexion.disconnect();

vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 50


Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Exposer une application Java sous la forme d’un Web Service RESTful

Service REST : Exemple avec Java


@Path("/helloREST")
public class HelloResource { Chemin d'accès de la ressource
private String name;
public HelloResource(){
this.name="Robert";
} Mapping des opérations HTTP sur des
méthodes de la classe + type MIME du
@GET
contenu produit/consommé (important)
@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 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 51
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services RESTful
Exposer une application Java sous la forme d’un Web Service RESTful

Service REST : Autres méthodes HTTP


@Path("/helloREST")
@Singleton Composant EJB ayant une instance unique,
public class HelloResource { dont le rôle est de "mémoriser"
private String name;
la chaîne de caractère "name"
public HelloResource(){
this.name="Robert";
}

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

@POST
Opération POST pour modifier la ressource
@Consumes("text/plain") + consomme et produit du texte
@Produces("text/plain")
public String putHello(String content) {
this.setName(content);
return "New name = "+this.getName();
}
}
vendredi 5 décembre 2014 Idir AIT SADOUNE - <idir.aitsadoune@supelec.fr> 52

Vous aimerez peut-être aussi