75
29 Chapitre 1: Les services Web Généralités

Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

Embed Size (px)

Citation preview

Page 1: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

29

Chapitre 1: Les services Web

Généralités

Page 2: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

Chapitre 1: Les services Web

Plan:

Introduction

Architecture orientée services

SOAP

WSDL

UDDI

Création d’un service Web avec Java EE

30

Page 3: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

31

Un service Web est une « unité logique applicative » accessible en utilisant les protocoles standard d’Internet

Un objet métier qui peut être déployé et combiné sur Internet avec une faible dépendance vis-à-vis des technologies et des protocoles.

Combine les meilleurs aspects du développement à base de composants et du Web.

Un Service Web, c’est quoi ?

Page 4: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

32

Caractéristiques:

Réutilisables

Faiblement couplés

Indépendamment de

la plate-forme (UNIX, Windows, …)

l’implémentation (VB, C#, Java, …)

l’architecture sous-jacente (.NET, JEE, …)

Un Service Web, c’est quoi ?

Page 5: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

33

Evolution du Web

Generation 1

Static HTML

HTML

Generation 2

Web Applications

HTML HTML, XML

HTML, XML

Generation 3

Web Services

Page 6: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

34

Le Web 3ème génération

File DB

“Dynamic Pages”

Browser

Web Server

In-house systems

“T

he F

irew

all”

Web site

Web site

Web site

Générations 1 et 2 Un site Web fournie des pages HTML - pas de structure - impossible à fusionner avec d‟autres pages

Génération 3 Un site Web est un composant fournissant des services en XML - structure / sémantique - fusion possible

Web service

Web service

Web service

Page 7: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

35

Pourquoi faire ?

Les services Web permettent d’interconnecter : Différentes entreprises

Différents matériels

Différentes applications

Différents clients

Distribuer et intégrer des logiques métiers

Vers le Web sémantique

Les services Web sont faiblement couplés

Page 8: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

36

Quels objectifs ?

Remplacer les protocoles actuels (RPC,DCOM,RMI) par une approche entièrement ouverte et interopérable, basée sur la généralisation des serveurs Web.

Faire interagir des composants hétérogènes, distants, et indépendants avec un protocole standard (SOAP).

Dédiés aux applications B2B (Business to Business), EAI (Enterprise Application Integration), P2P (Peer to Peer).

Page 9: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

37

Et plus concrètement ?

Une nouvelle technologie des objets distribués ? Invocation distante des services Web : SOAP Description des services Web : WSDL Enregistrement et découverte de services Web : UDDI

Basés sur des standards XML Standards du W3C : XML, SOAP, WSDL Standards industriels : UDDI, ebXML Propriétaires : DISCO, WSDD, WSFL, ASMX, …

Implémentations actuelles : Microsoft .Net Sun JavaONE : JEE + Web services (WSDP = JAXP,JAX-RPC,JAXM…) Apache SOAP / Axis, IBM WSTK Oracle, Bea, Iona, Enhydra …

Page 10: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

38

Les services Web

Architecture orientée services

Page 11: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

Architecture orientée services (SOA)

SOA est une architecture logicielle s’appuyant sur un ensemble de services simples

Son objectif est de:

Décomposer une fonctionnalité en un ensemble de fonctions basiques (les services)

Décrire le schéma d’interaction entre ces services

39

Page 12: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

Architecture orientée services (SOA)

40

Page 13: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

41

Annuaire

UDDI

Client XML

5 : J‟ai compris comment invoquer

ton service et je t‟envoie un document

XML représentant ma requête

Serveur

2 : J‟ai trouvé! Voici le serveur

hébergeant ce service web

3 : Quel est le format d‟appel du

service que tu proposes? Contrat

SOAP

4 : Voici mon contrat (WSDL)

XML

XML

6 : J‟ai exécuté ta requête et je te retourne le résultat

1 :

Je r

ech

erc

he

un

serv

ice W

EB

Cycle de vie d’utilisation

Page 14: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

42

Cycle de vie complet

Etape 1 : Déploiement du service Web

Etape 2 : Enregistrement du service Web WSDL : description du service

Référentiels : DISCO (local), UDDI (global)

Etape 3 : Découverte du service Web

Etape 4 : Invocation du service Web par le client

Page 15: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

43

1: Déploiement du WS

Page 16: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

44

2: Enregistrement du WS

Page 17: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

45

3: Découverte du WS

Page 18: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

46

4: Invocation du WS

Page 19: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

47

Architecture globale

Page 20: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

48

Les services Web

SOAP : Simple Object Access Protocol

Page 21: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

49

Le Web et le client serveur

Proposition Web actuelle insuffisante Autres plates-formes client / serveur

Java RMI mono-langage : Java, multi-plateforme (JVM), SUN Pas réaliste pour une application industrielle (performance, sécurité, …)

CORBA / IIOP Multilangage, multi-plateforme, Multi-vendeurs, OMG Installation « coûteuse » si on doit acheter un ORB

Mais les open-sources sont gratuits et souvent plus complet www.objectweb.org

DCOM multi-langages, plateforme Win32, Propriétaire Microsoft protocole orienté connexion

Échange de nombreux paquets pour créer/maintenir une session

Faible diffusion Pas disponible sur MacOS, NT3.51, Win95, WinCE2 Coûteux sur UNIX, MVS, VMS ou NT

Page 22: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

50

Le bilan…

Approche insatisfaisante :

Protocoles sophistiqués

Coût d’installation (faite par un administrateur, consomme des ressources : machines, personnels, …)

Difficile à porter sur d’autres plates-formes

Règles de fonctionnement strictes en environnement ouvert (le Net)

Environnement sécurisé (intérieur d’un intranet)

Incapacité à fonctionner en présence de pare-feu (utilisation impossible sur Internet)

Page 23: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

51

… et ses conséquences

Le Web a besoin d’un nouveau protocole

Multi-langages, multi-plateformes

Respectant les formats d’échanges du Web

Réponses et requêtes en XML

Facile à implémenter sur différents protocoles de transport

RPC, HTTP ou autre MOM

Permettant de franchir les « firewalls »

Avec une spécification non propriétaire garantie par un organisme indépendant

W3C

La réponse : SOAP (Simple Object Access Protocol)

Page 24: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

52

La philosophie S.O.A.P

SOAP codifie simplement une pratique existante Utilisation conjointe de XML et HTTP

SOAP est un protocole minimal pour appeler des méthodes sur des serveurs, services, composants, objets Ne pas imposer une API ou un runtime

Ne pas imposer l’utilisation d’un ORB (CORBA, DCOM, …) ou d’un serveur web particulier (Apache, IIS, …)

Ne pas imposer un modèle de programmation Plusieurs modèles peuvent être utilisés conjointement

Et “ne pas réinventer une nouvelle technologie”

SOAP a été construit pour pouvoir être aisément porté sur toutes les plates-formes et les technologies Vous pouvez écrire votre 1er appel SOAP en moins d’une heure !!

Il vous a fallu combien de temps en CORBA, RMI, DCOM ?

Page 25: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

53

En résumé

SOAP = HTTP + XML

Serveur

HTTP

Station

requêtes SOAP (XML)

Client

HTTP

Serveur

ISAPI

CGI Application partie -cliente

Browser

client universel

Réponses SOAP

(XML)

Application partie-serveur

ASP

Servlets

Page 26: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

54

Pourquoi utiliser HTTP ?

HTTP (HyperText Transfer Protocol) est devenu de facto le protocole de communication de l’Internet

HTTP est disponible sur toutes les plates-formes – très rapidement

HTTP est un protocole simple, qui ne requière que peu de support pour fonctionner correctement

HTTP offre un niveau de sécurité simple et effectif

Page 27: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

55

Fonctionnement d’HTTP

HTTP utilise un protocole requête/réponse basé sur du texte

La première ligne de la requête contient 3 éléments Verbe : POST/GET/HEAD

URI : /default.htm

Protocole : HTTP/1.0 - HTTP/1.1

La première ligne de la réponse contient 2 éléments État : 200, 402

Phrase : OK, Unauthorized

Les lignes suivantes contiennent un nombre arbitraire d’entête

Le “contenu” suit une ligne d’entête vide Utilisé essentiellement pour les réponses et pour les requêtes POST

Page 28: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

56

Fonctionnement d’HTTP

GET /bar/foo.txt HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 12 Hello, World

POST /bar/foo.cgi HTTP/1.1 Content-Type: text/plain Content-Length: 13 Goodbye, World

HTTP Request HTTP Response

or

HTTP Request

ou

HTTP Response

Page 29: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

57

Pourquoi utiliser XML ?

Utilise du texte (peut être lu et écrit directement)

Construire correctement du texte XML est simple

XML est aujourd’hui adopté par tous les acteurs de l’Internet : plates-formes, éditeurs, …

XML permet une extensibilité aisée par l’utilisation d’espaces de nommage)

XML permet d’ajouter du typage et de la structure à des informations

W3C n’impose pas un API mais en recommande un (DOM)

D’autres sont utilisés : SAX, strcat

Page 30: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

58

Eléments de SOAP

L’enveloppe (enveloppe) Définit la structure du message

Les règles d’encodage (encoding rules) Définit le mécanisme de sérialisation permettant de construire le

message pour chacun des types de données pouvant être échangés

Fonctionnement en modèle client / serveur (RPC representation) Définit comment sont représentés les appels de procédure et les

réponses

Proposer une mise en œuvre sur HTTP (HTTP Extension Framework) RFC 2774

Définir l’échange de message SOAP sur HTTP

Page 31: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

59

Structure d’un message SOAP

Page 32: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

Structure d’un message SOAP

Un message SOAP est contenu dans une balise Envelope

Une Envelope peut contenir une balise Header Une Header peut contenir n’importe quel ensemble de balises. Ces

balises doivent appartenir à des namespaces.

Une Envelope doit contenir une balise Body Un Body peut contenir n’importe quelle ensemble de balises. Ces balises

peuvent appartenir à des namespaces.

Un Body peut contenir des balises Fault qui permettent d’identifier des erreurs.

Page 33: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

SOAP Header

Mécanisme d’extension du protocol SOAP

La balise Header est optionnelle

Si la balise Header est présente, elle doit être le premier fils de la balise Envelope

La balise Header contient des entrées

Une entrée est n’importe quelle balise incluse dans un namespace

Page 34: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

SOAP Header Example

<SOAP-ENV:Header>

<t:Transaction xmlns:t="some-URI"> 5

</t:Transaction>

</SOAP-ENV:Header>

Page 35: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

SOAP Body

Le Body contient le message à échanger

La balise Body est obligatoire

La balise Body doit être le premier fils de la balise Envelope (ou le deuxième si il existe une balise Header)

La balise Body contient des entrées

Une entrée est n’importe quelle balise incluse optionnellement dans un namespace

Une entrée peut être une Fault.

Page 36: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

SOAP Fault

Balise permettant de signaler des cas d’erreur.

La balise Fault contient les balises suivantes

faultcode : un code permettant d’identifier le type d’erreur

Client, Server, VersionMismatch, MustUnderstand

faultstring : une explication en langage naturel

faultactor : une information identifier l’initiateur de l’erreur

detail : Définition précise de l’erreur.

Page 37: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

65

Un exemple d’échange POST /path/foo.pl HTTP/1.1

Content-Type: text/xml

SOAPAction: interfaceURI#Add

Content-Length: nnnn

<soap:Envelope xmlns:soap=„uri for soap‟>

<soap:Body>

<Add xmlns=„interfaceURI‟>

<arg1>24</arg1>

<arg2>53.2</arg2>

</Add>

</soap:Body>

</soap:Envelope>

200 OK

Content-Type: text/xml

Content-Length: nnnn

<soap:Envelope

xmlns:soap=„uri for soap‟>

<soap:Body>

<AddResponse xmlns=„interfaceURI‟ >

<sum>77.2</sum>

</AddResponse>

</soap:Body>

</soap:Envelope>

Page 38: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

66

Types de message SOAP

SOAP définit trois types de message

Appel (Call) - obligatoire

Réponse (Response) - optionnel

Erreur (Fault) - optionnel

Page 39: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

67

Appel simple

POST /StockQuote HTTP/1.1

Host: www.stockquoteserver.com

Content-Type: text/xml

Content-Length: nnnn

SOAPMethodName: Some-Namespace-URI#GetLastTradePrice

<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1”>

<SOAP:Body>

<m:GetLastTradePrice

xmlns:m="Some-Namespace-URI”>

<symbol>DIS</symbol>

</m:GetLastTradePrice>

</SOAP:Body>

</SOAP:Envelope>

Page 40: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

68

Réponse

HTTP/1.1 200 OK

Content-Type: text/xml

Content-Length: nnnn

<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1”>

<SOAP:Body>

<m:GetLastTradePriceResponse

xmlns:m="Some-Namespace-URI”>

<return>34.5</return>

</m:GetLastTradePriceResponse>

</SOAP:Body>

</SOAP:Envelope>

Page 41: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

69

Erreur

<SOAP:Envelope

xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1>

<SOAP:Body>

<SOAP:Fault>

<faultcode>400</faultcode>

<faultstring>

SOAP Must Understand Error

</faultstring>

<runcode>1</runcode>

</SOAP:Fault>

<SOAP:Body>

</SOAP:Envelope>

Page 42: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

70

Implémentations de SOAP

See http://www.Soapware.org

JAXM, JAX-RPC RI

Apache SOAP 2.2

Apache AXIS

SoapRMI

SOAPDirect

InstantXML

.Net

...

Page 43: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

71

Les services Web

WSDL : Web Services Description Language

Page 44: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

72

WSDL

Standard du W3C

Version 1.1 en 2001

Version 2.0 en 2007,

Objectif Décrire les services comme un ensemble d’opérations et

de messages abstraits relié (bind) à des protocoles et des serveurs réseaux

Grammaire XML (schema XML) Séparation entre la partie abstraite et concrète

Page 45: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

73

WSDL

Implementation Interface

<portType>

<message>

<import>

<definitions>

<binding>

<types>

<port>

<import>

<definitions>

<service>

Page 46: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

74

Éléments d’une définition WSDL

<types> Contient les définitions de types utilisant un système de typage (comme XSD).

<message> Décrit les noms et types d’un ensemble de champs à transmettre

Paramètres d’une invocation, valeur du retour, …

<porttype> Décrit un ensemble d’opérations. Chaque opération a zéro ou un message en entrée,

zéro ou plusieurs message de sortie ou de fautes

<binding> Spécifie une liaison d’un <porttype> à un protocole concret (SOAP1.1, HTTP1.1, MIME, …). Un <porttype> peut avoir plusieurs liaisons !

<port> Spécifie un point d’entrée (endpoint) comme la combinaison d’un <binding> et d’une

adresse réseau.

<service> Une collection de points d’entrée (endpoint) relatifs.

Page 47: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

75

Élément <types>

Contient les définition de types utilisant un système de typage (comme XSD). Exemple

<!-- type defs --> <types> <xsd:schema targetNamespace="urn:xml-soap-address-demo" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:complexType name="phone"> <xsd:element name="areaCode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:string"/> <xsd:element name="number" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="address"> <xsd:element name="streetNum" type="xsd:int"/> <xsd:element name="streetName" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:int"/> <xsd:element name="phoneNumber" type="typens:phone"/> </xsd:complexType> </xsd:schema> </types>

Page 48: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

76

Élément <message>

Décrit les noms et types d’un ensemble de champs à transmettre Paramètres d’une invocation, valeur du retour, …

Exemple <message name="AddEntryRequest"> <part name="name" type="xsd:string"/> <part name="address" type="typens:address"/> </message> <message name="GetAddressFromNameRequest"> <part name="name" type="xsd:string"/> </message> <message name="GetAddressFromNameResponse"> <part name="address" type="typens:address"/> </message>

Page 49: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

77

Élément <porttype>

Décrit un ensemble d’opérations. Plusieurs types d’opérations

One-way Le point d’entrée reçoit un message (<input>).

Request-response Le point d’entrée reçoit un message (<input>) et retourne un message corrélé

(<output>) ou un ou plusieurs messages de faute (<fault>).

Solicit-response Le point d’entrée envoie un message (<output>) et recoit un message corrélé

(<input>) ou un ou plusieurs messages de faute (<fault>).

Notification Le point d’entrée envoie un message de notification (<output>)

Paramètres Les champs des messages constituent les paramètres (in,out, inout) des

opérations

Page 50: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

78

Élément <porttype>

Exemple <!-- port type declns --> <portType name="AddressBook"> <!– One way operation --> <operation name="addEntry"> <input message="AddEntryRequest"/> </operation> <!– Request-Response operation --> <operation name="getAddressFromName"> <input message="GetAddressFromNameRequest"/> <output message="GetAddressFromNameResponse"/> </operation> </portType>

Page 51: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

79

Élément <binding> Consiste à spécifier comment les appels et réponses d'élément

<operation> sont envoyés et transmis. Exemple de binding sur SOAP et HTTP

<!-- binding declns --> <binding name="AddressBookSOAPBinding" type="AddressBook"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="addEntry"> <soap:operation soapAction=""/> <input> <soap:body use="encoded" namespace="urn:AddressFetcher2" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

</input> <output> <soap:body use="encoded" namespace="urn:AddressFetcher2" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> <operation name="getAddressFromName"> <soap:operation soapAction=""/> <input> <soap:body use="encoded" namespace="urn:AddressFetcher2" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

</input> <output> <soap:body use="encoded" namespace="urn:AddressFetcher2"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output> </operation> </binding>

Page 52: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

80

Élément <binding>

Exemple de binding avec SOAP et SMTP <definitions ...>

<types> <schema targetNamespace="http://stockquote.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="SubscribeToQuotes"> <complexType><all><element name="tickerSymbol"

type="string"/></all></complexType></element> <element name="SubscriptionHeader" type="uriReference"/> </schema> </types> <message name="SubscribeToQuotes"> <part name="body" element="xsd1:SubscribeToQuotes"/> <part name="subscribeheader" element="xsd1:SubscriptionHeader"/> </message> <portType name="StockQuotePortType"> <operation name="SubscribeToQuotes"> <input message="tns:SubscribeToQuotes"/> </operation> </portType> …

Page 53: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

81

Élément <binding> … <binding name="StockQuoteSoap" type="tns:StockQuotePortType"> <soap:binding style="document"

transport="http://stockquote.com/smtp"/> <operation name="SubscribeToQuotes"> <input message="tns:SubscribeToQuotes"> <soap:body parts="body" use="literal"/> <soap:header message="tns:SubscribeToQuotes" part="subscribeheader" use="literal"/> </input> </operation> </binding> <service name="StockQuoteService"> <port name="StockQuotePort" binding="tns:StockQuoteSoap"> <soap:address location="mailto:[email protected]"/> </port> </service> </definitions>

Page 54: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

82

Élément <service>

Une collection de points d’entrée (endpoint) relatifs Exemple :

<?xml version="1.0" ?> <definitions name="urn:AddressFetcher" targetNamespace="urn:AddressFetcher2" xmlns:typens="urn:xml-soap-address-demo" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> … <!-- service decln --> <service name="AddressBookService"> <port name="AddressBook" binding="AddressBookSOAPBinding"> <soap:address

location="http://www.mycomp.com/soap/servlet/rpcrouter"/> </port> </service> </definitions>

Page 55: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

83

Outils

Générateur WSDL à partir de déploiement SOAP ou EJB, …

Générateur de proxy SOAP à partir de WSDL

Toolkits (Wsdl2Java / Java2Wsdl, …)

Propriétaires (non normalisés)

Page 56: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

84

Les services Web

UDDI :

Universal Description, Discovery and Integration

Page 57: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

85

UDDI

Spécification (09/2000) Ariba, IBM, Microsoft +260 autres sociétés

Objectifs annuaire mondial d'entreprises pour permettre d'automatiser les

communications entre prestataires, clients, etc.

plusieurs entrées indexées : nom, carte d'identité des sociétés, description des produits, services applicatifs invocables à distance (références des connexions)

Grammaire XML (schéma XML) Soumission/interrogation basées sur SOAP et WSDL

Page 58: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

UDDI

UDDI: Une spécification pour la description et la découverte des Web Services

• Les Businesses enregistrent des informations publiques les concernant

• Les développeurs, éditeurs de logiciels, organismes de standardisation enregistrent des types de services techniques

White pages (informations générales)

Yellow pages (catégories de services)

Green pages (business rules)

White Pages

Yellow Pages

Green Pages

Page 59: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

UDDI

Pages blanches : noms, adresses, contacts, identifiants,… des entreprises

enregistrées. Ces informations sont décrites dans des entités de type Business

Entity. Cette description inclut des informations de catégorisation permettant de

faire des recherches spécifiques dépendant du métier de l’entreprise

Pages jaunes : détails sur le métier de l’entreprise, les services qu’elle propose.

Ces informations sont décrites dans des entités de type Business Service

Pages vertes : informations techniques sur les services proposés. Les pages vertes

incluent des références vers les spécifications des services Web, et les détails

nécessaires à l’utilisation de ces services. Ces informations sont décrites dans deux

documents : un Binding Template, et un Technology Model (tModel).

Page 60: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

88

UDDI Information Model

businessEntity (Provider):

informations sur le métier

disposant d'un service publié

businessService (Service):

une description de service Web

BindingTemplate (modèle de

liaison): informations techniques

permettant de déterminer le point d'entrée et

les spécifications de construction pour

appeler un servie Web.

tModel: Descriptions of

specifications for services.

Bindings contain references

to tModels. These

references designate the

interface specifications for

a service.

0…n

0…n

1…n

Page 61: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

89

UDDI Schema

Interface Implementation

<businessService>

<businessEntity>

<bindingTemplate>

<tModel>

<tModel>

<businessService>

<bindingTemplate>

Page 62: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

90

Providers, Services And Bindings

Providers Examples: Accounting Department, Corporate Application Server

Name, Description, Contact Information

Categorization and Identification Information

Services Examples: Purchase Order services, Payroll services

Name, Description(s)

Categorization Information

Bindings Description(s), access points, parameters

Examples: Access Point (http://...) for Web Service

Page 63: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

91

<bindingTemplate>

<bindingTemplate> represents data and implementation details

<bindingTemplate serviceKey="33c3d124-e967-4ab1-

8f51-d93d95fac91a" bindingKey="48f2bc6b-a6de-4be8-9f2b-2342aeafaaac">

<accessPoint URLType="http">

http://localhost/HelloWorld/Service1.asmx

</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey="uuid:64c756d1-3374-4e00-ae83-ee12e38fae63“/>

</tModelInstanceDetails>

</bindingTemplate>

Page 64: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

UDDI Relations entre UDDI et WSDL

2 parties dans WSDL : interface + implémentation

Interface

<Definition>

<Types>

<Import>

<Message>

<Portype>

<binding>

</Definition>

Implémentation

<Definition>

<Import>

<Service>

<Port>

</Service>

</Definition>

Page 65: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

UDDI Relations entre UDDI et WSDL

Remarque: Lors de la publication d'une description de service WSDL,

une interface doit être publiée en tant que tModel avant la publication

d'une implémentation de service en tant que businessService.

Page 66: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

<wsdl:definitions name="NormAdresseService"

targetNamespace="http://…">

<import namespace="http://…"

location="http://…" />

<wsdl:service name="DoNormeService">

<wsdl:port name="NormAdresseService "

binding="intf:NormAdresseServiceSoapBinding">

</wsdl:service>

</wsdl:definitions>

<wsdl:definitions name="NormAdresseService.interface"

targetNamespace="http://…">

<wsdl:message name="getNormeResponse">

</wsdl:message>

<wsdl:portType name="DoNorme">

</wsdl:portType> <wsdl:binding name="NormAdresseServiceSoapBinding" type="intf:DoNorme"> </wsdl:binding> </wsdl:definitions>

Interface

Implémentation

<BusinessEntity businessKey="…"

<name> Normalisation d'adresse </name>

<businessService serviceKey="…">

<name> DoNormeService </name>

<BindingTemplates bindingKey="…">

<TmodelInstanceInfo tModelKey="…">

<overviewDoc>

<overviewdocURL>http://…# NormAdresseService

</overviewdocURL>… </BindingTemplates> </businessService> </BusinessEntity>

<tModel tModelKey="…"

<name> http://… </name>

<overviewDoc>

<overviewdocURL>http://…#NormAdresseServiceSoapBinding

targetNamespace="http://…"> </overviewdocURL>… <categoryBag> <KeyedReference tModemKey="…" keyname="uddi-org:types keyvalue="wsdlSpec"/> </ categoryBag > </tModel>

UDDI

Page 67: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

95

Les services Web

Création d’un Web Service avec Java EE

Page 68: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

96

Les APIs Java pour les SW

Page 69: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

97

Création d’un Web Service avec Java EE Web Service = classe + annotations

Page 70: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

98

Création d’un Web Service avec Java EE JAX-WS

JAX-WS (Java API for XML Web Services)

Objectif = mapping WSDL Java et SOAP Java

Correspondance automatique Classe (ou interface) Java ➜ WSDL

Correspondance automatique WSDL ➜ Java

Transformation automatiquement appel de méthode Java message SOAP

Page 71: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

99

Création d’un Web Service avec Java EE Objets passés en XML : JAXB

JAXB : Java Architecture for XML Binding

Objectif = conversion XML/Java

Données nécessaires : Schéma XML Schema

ou classes Java annotées

Opérations supportées : Compilation : XML Schéma classe Java annotée

Exécution : objet Java représentation XML

Validation

Page 72: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

100

Création d’un Web Service avec Java EE Exemple avec JAXB

Page 73: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

101

Création d’un Web Service avec Java EE Code first vs Contract first

Deux approches pour la création de SW:

Approche Bottom-up (ou code first): Création d’une classe Java -> déploiement -> WSDL

Approche top-down (ou contract-first) : Développer un Service Web à partir de sa description WSDL.

Page 74: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

102

Création d’un Web Service avec Java EE Client d’un Web Service

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

Page 75: Chapitre 1: Les services Web - Djamel Benmerzougdbenmerzoug.e-monsite.com/medias/files/dos-chap1.pdf · Chapitre 1: Les services Web ... applicative » accessible en utilisant les

103

Création d’un Web Service avec Java EE Client d’un Web Service

A l'aide de JAX-WS, se connecter au service et appeler ses opérations :

Il est possible de

générer

automatiquement

un client