Cours 5 : Web services - Idir AIT SADOUNE

publicité
Mineure Architectures Orientées Services SOA – Web Services
Mineure SOA
Web Services
Idir AIT SADOUNE
[email protected]
Idir AIT SADOUNE - <[email protected]>
Mineure Architectures Orientées Services SOA – Web Services
Plan
① Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.
Définition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implémentation 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 décembre 2014
Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful
Idir AIT SADOUNE - <[email protected]>
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
o
o
o
Associé à une URL sur le web
HTTP
Accessible via des protocoles internet standard
Accessible indépendamment des technologies d’implémentation
Auto-descriptif
XML
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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
Découverte
HTTP +
XML
Publication
Client
Fournisseur
Internet
Application
Web Service
Utilisation
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
Interface
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
Fournisseur
Annuaire
Client
Enregistrement
Déploiement
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
Réponse
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
HTTP +
XML
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
o Lecture : GET, HEAD…
o Modification : POST, PUT, DELETE…
o En-tête : nom du serveur, …
o Réponse
o En-tête : code de statut, type
de serveur, type de contenu…
o Contenu de la ressource demandée
o Non conservation de l’état
entre deux couples requête/réponse
vendredi 5 décembre 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 - <[email protected]>
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
www.free.fr
Client
1 – Requête :
GET http://idir.aitsadoune.free.fr/index. html
3 – Affichage :
interprétation
HTML
…\htdocs\idir.aitsadoune\
HTML
HTML
index. html
2 – Réponse :
contenu de index.html
index. html
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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
o
o
o
text/xml
audio/mpeg
image/jpeg
application/pdf
vendredi 5 décembre 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 - <[email protected]>
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
Gaston
Lagaffe
date_naissance
compagnie
vendredi 5 décembre 2014
adresse
boite_postale
ville
poids
taille
unite
180
cm
code_postal pays
Idir AIT SADOUNE - <[email protected]>
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>
prenom
nom
Gaston
Lagaffe
date_naissance
compagnie
vendredi 5 décembre 2014
personne
adresse
boite_postale
ville
poids
taille
unite
180
cm
code_postal pays
Idir AIT SADOUNE - <[email protected]>
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>
<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 = 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 - <[email protected]>
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
Application
Fournisseur
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 - <[email protected]>
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
Internet
Application
Web Service
Interface
o Pour créer un Web Service :
1.
2.
3.
4.
5.
Définir le contrat du service
Développer le service
Développer la couche de traitement XML
Déployer sur le serveur
Publier dans l’annuaire
vendredi 5 décembre 2014
Suivant les technologies, certaines
tâches sont automatisées…
Idir AIT SADOUNE - <[email protected]>
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
Internet
Application
Web Service
Interface
o Pour créer une application cliente :
1.
2.
3.
4.
5.
Rechercher le service dans l'annuaire
Suivant les technologies, certaines
Récupérer le contrat du service
tâches sont automatisées…
Créer un stub/proxy
Développer la couche de traitement XML
Utiliser le service et présenter les résultats (rendu)
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
14
Mineure Architectures Orientées Services SOA – Web Services
Plan
① Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.
Définition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implémentation 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 décembre 2014
Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful
Idir AIT SADOUNE - <[email protected]>
15
Mineure Architectures Orientées Services SOA – Web Services
Les Web Services WS-*
Standards et acteurs
Principales technologies
Annuaire de services
SOAP/UDDI
Découverte
SOAP/UDDI
Publication
Client
Fournisseur
Internet
Application
Web Service
Utilisation
SOAP
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
Interface
WSDL
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 - <[email protected]>
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 - <[email protected]>
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
Découverte
SOAP/UDDI
Publication
Client
Fournisseur
Internet
Application
Web Service
Utilisation
SOAP
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
Interface
WSDL
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 - <[email protected]>
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
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 décembre 2014
Noms, types et ordre des paramètres
Part
Idir AIT SADOUNE - <[email protected]>
Type
Type
Type
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 […]>
<operation […]>
<input […] />
<output […] />
</operation>
</portType>
Interface
du service
(fonctionnelle)
<binding […]>[…]</binding>
<service […]>
<port […]>[…]</port>
</service>
Informations
techniques
</definitions>
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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
Découverte
SOAP/UDDI
Publication
Client
Fournisseur
Internet
Application
Web Service
Utilisation
SOAP
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
Interface
WSDL
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
o Un modèle de structure pour les requêtes et
les réponses (messages)
o Envelope : obligatoire, définit un message SOAP
o Header : optionnel, informations non applicatives
(sécurité…) ou destinées aux intermédiaires
o Body : décrit la requête ou la réponse
<Header>
<transId>1234</transId>
</Header>
<Body>
<add>
<varx>3</varx>
<vary>4</varY>
</add>
</Body>
</Envelope>
o Un modèle de traitement des messages
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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 - <[email protected]>
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
Découverte
SOAP/UDDI
Publication
Client
Fournisseur
Internet
Application
Web Service
Utilisation
SOAP
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
Interface
WSDL
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
Nom de la société
Information sur les contacts
Description texte
Identifications (DUNS, SIRET, etc.)
vendredi 5 décembre 2014




Index services et produits
Code d’industrie (APE, etc.)
Index géographique
Taxonomie
Pages vertes
 Procédures e-business
 Descriptions technique des services
 Paramètres des services
Idir AIT SADOUNE - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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
Internet
Application
Web Service
SOAP/HTTP
Interface
Java
JAX-WS
+JAXB
vendredi 5 décembre 2014
WSDL
Java
JAX-WS
+JAXB
Idir AIT SADOUNE - <[email protected]>
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+" !";
}
}
vendredi 5 décembre 2014
Correspondance
annotation ⬌ WSDL
= JAX-WS
Idir AIT SADOUNE - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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"?>
<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 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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. Implémenter la logique métier
2. Générer automatiquement le contrat
WSDL pour le publier
1. Ecrire le contrat WSDL
2. Implémenter la logique métier
o Possibilité de générer le squelette de code
de la logique métier à partir du contrat
o Avantages
o Avantages
o Simple à réaliser
o Utilité pour exposer du code legacy,
ou pour faire des tests
o Inconvénients
o Meilleur découplage interface –
implémentation, stabilité du WSDL
o Meilleures performances généralement
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 - <[email protected]>
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
Internet
Application
Web Service
SOAP/HTTP
Interface
Java
JAX-WS
+JAXB
vendredi 5 décembre 2014
WSDL
Java
JAX-WS
+JAXB
Idir AIT SADOUNE - <[email protected]>
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 - <[email protected]>
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
@WebService
public interface HelloService {
@WebMethod
public String sayHello(@WebParam(name = "n") String n);
}
Il est possible
de générer
automatiqueme
nt un client :
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 - <[email protected]>
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
Internet
Application
Web Service
SOAP/HTTP
Interface
Java
JAX-WS
+JAXB
vendredi 5 décembre 2014
WSDL
Java
JAX-WS
+JAXB
Idir AIT SADOUNE - <[email protected]>
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é
entre les implémentations des normes
liées 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
à 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 - <[email protected]>
43
Mineure Architectures Orientées Services SOA – Web Services
Plan
① Qu'est-ce qu'un Web Service ?
1.
2.
3.
4.
Définition et principe
Rappels sur le protocole HTTP
Rappels sur le langage XML
Implémentation 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 décembre 2014
Principes
Appeler un Web Service RESTful en Java
Exposer une application Java sous la forme d'un Web Service RESTful
Idir AIT SADOUNE - <[email protected]>
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
o
o
o
Moins de standards à maîtriser et implémenter
Messages moins verbeux
Utilisation moins couteuse
…
vendredi 5 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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
o
o
o
PUT = Create = création 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 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 - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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 - <[email protected]>
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 {
private String name;
public HelloResource(){
this.name="Robert";
}
Chemin d'accès de la ressource
Mapping des opérations HTTP sur des
méthodes 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 décembre 2014
Idir AIT SADOUNE - <[email protected]>
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
public class HelloResource {
private String name;
Composant EJB ayant une instance unique,
dont le rôle est de "mémoriser"
la chaîne de caractère "name"
public HelloResource(){
this.name="Robert";
}
@GET
@Produces("text/plain")
public String getHello() {
return "Hello "+this.getName()+" !";
}
Opération 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 décembre 2014
Idir AIT SADOUNE - <[email protected]>
52
Téléchargement