42
Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0

Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0

  • Upload
    argyle

  • View
    47

  • Download
    0

Embed Size (px)

DESCRIPTION

Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0. Sommaire. Revue des standards des Web services Le protocole SOAP Le langage WSDL Le service d’annuaires UDDI Développement classique avec Apache Axis Développement avec JAX-WS 2.0. Définition de l’architecture SOA. - PowerPoint PPT Presentation

Citation preview

Page 1: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Chapitre 5

Web Services : Le nouveau standard JAX-WS 2.0

Page 2: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

2M.Romdhani, INSAT, Octobre 2009

Sommaire

Revue des standards des Web services Le protocole SOAP Le langage WSDL Le service d’annuaires UDDI

Développement classique avec Apache Axis

Développement avec JAX-WS 2.0

Page 3: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

3M.Romdhani, INSAT, Octobre 2009

Définition de l’architecture SOA « Il s’agit d’un modèle pour organiser et

architecturer les services offerts par un organisme » (Définition de l’OASIS)

Batch

On-linemidrange

Client/server

Web client

Service-oriented

architectures

1970s 1980s 1990s 2000s 2010s

Page 4: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

4M.Romdhani, INSAT, Octobre 2009

Schema

Agreements

ProgrammingLanguage

Object Model

ApplicationServer

Database

OperatingSystem

Database

OperatingSystem

ProgrammingLanguage

Object Model

ApplicationServer

Vous L’autre

Solution à fort couplage Architecture orientée Services

SOA : Intégration on interopérabilité ?

Page 5: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

5M.Romdhani, INSAT, Octobre 2009

L'architecture orientée service

« Service-oriented architectures are an approach to designing distributed computing systems that considers software resources as services available on a network. »

Les 4 principes fondamentaux de SOA [Définition de microsoft « Don Box »] :

1. Frontière explicite

2. Services Autonomes

3. Les services partagent les schémas, les contrats mais pas les classes

4. La compatibilité des services est négociée sur la base de stratégies

Page 6: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

6M.Romdhani, INSAT, Octobre 2009

Contracts

Services

Service

State

Logic

Message2Message1

Page 7: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

7M.Romdhani, INSAT, Octobre 2009

L‘idée principale de la SOA

Messages Flux de données non encapsulées Pas de suppositions sur l‘implémentation

Contrats: Frontières explicites Les types de données et les sémantiques y sont explicités Les types de données doivent permettre l‘évolution Les paramètres techniques de sécurité, de transactions pour les

Services sont négociables dynamiquement

Processus autonomes. « Building Blocks », et non pas des Silos.

Page 8: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

8M.Romdhani, INSAT, Octobre 2009

Revue des standards des Web services

Page 9: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

9M.Romdhani, INSAT, Octobre 2009

Qu’est ce qu’un Web Service ?

Les Web Services sont des services offerts via le web

Un service Web est un ensemble de protocoles et de normes utilisés pour échanger des données entre les applications

Web Service = HTTP + XML

Les prolifération des Services Web correspond à un nouveau standard d’architectures applicatives qui est le SOA (Service Oriented Architecture)

Un exemple : un client demande le prix d’un article en envoyant un message sur le web. Ce message contient la référence de l’article. Le Web Service va recevoir la référence, effectuer le traitement du service et renvoyer le prix au client via un autre message.

Page 10: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

10M.Romdhani, INSAT, Octobre 2009

Standards des Web services

Les Standards décrivent :

Qu’est ce qui circule “sur le fil” ? Formats et protocoles (SOAP)

Qu’est ce qui décrit ce qui circule “sur le fil” ? Langage de Description (WSDL)

Qu’est ce qui nous permet de trouver ces descriptions ?

Référentiel (UDDI)

Page 11: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

11M.Romdhani, INSAT, Octobre 2009

SOAP (Simple Object Access Protocol)

Standard W3C (Initiative IBM et Microsoft) C’est un protocole de RPC pour l’invocation des méthodes

d'objets distants Basé entièrement sur XML

C’est une spécification non propriétaire

Prend en charge : divers protocoles de transport (HTTP, SMTP,…) différents formats (MIME,…)

Page 12: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

12M.Romdhani, INSAT, Octobre 2009

Structure d’un message SOAP

Message SOAP

=

Enveloppe ( Header + Body )

SAOP Header(Optional)

SAOP Body

Page 13: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

13M.Romdhani, INSAT, Octobre 2009

WSDL (Web Services Description Language)

Standard W3C

Langage de description des services Web

Basé entièrement sur XML (Schéma XML)

Définition de l’interface, de l’URL et du port du Web Service

Page 14: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

14M.Romdhani, INSAT, Octobre 2009

Contrat WSDL

Constitué par :

Un composant d’interface :- Format de transmission des messages- Protocole du Service Web- Opérations de transmission des messages

Un composant d’implémentation : le point d’accès (URL) du Service Web

Page 15: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

15M.Romdhani, INSAT, Octobre 2009

UDDI (Universal Description Discovery and Integration)

Les Services Web n’ont un sens que si des utilisateurs potentiels peuvent les localiser

C’est une technologie d'annuaire

Recommandation OASIS (Consortium travaillant sur la standardisation des technologies Web Services)

Référentiel défini lui-même en WSDL

Référentiel Public / Privé

Page 16: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

16M.Romdhani, INSAT, Octobre 2009

UDDI : comment ça marche ?

Page 17: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

17M.Romdhani, INSAT, Octobre 2009

Composition du répertoire UDDI

Chaque entrée du répertoire UDDI est constituée de trois parties :

1. Les "pages blanches" décrivent l'entreprise qui offre le service (nom, adresse, contacts,…)

2. Les "pages jaunes" comportent les catégories industrielles

3. Les "pages vertes" : contiennent une description technique de l’interface

Page 18: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

18M.Romdhani, INSAT, Octobre 2009

Récapitulatif SOAP, WSDL, et UDDI

SOAP

WSDL

UDDI

SOAP 1.2

Ent

ière

men

t ba

sés

sur

XM

L

Standard W3C

IBM, MICROSOFT ARIBA COMPAQ HP…

IBM MICROSOFTARIBA

ARIBARecommandation OASIS

Standard W3C WSDL 2.0

UDDI 3.0

C’est un protocole de RPC pour l’invocation des méthodes d'objets distants

C’est le langage de description des services Web

C’est une technologie d'annuaire

Page 19: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

19M.Romdhani, INSAT, Octobre 2009

Scénario de déroulement

AnnuaireUDDI

AnnuaireUDDI

ClientClientService

Web

ServiceWeb

Enregistrement du service

Recherche d’un service

InterfaceWSDL

Récupération de l’interface du service

Utilisation du service

SOAP

SOAP

HTTP

SOAP

1

2

3

4proxy

Page 20: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

20M.Romdhani, INSAT, Octobre 2009

Le protocole SOAP

Page 21: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

21M.Romdhani, INSAT, Octobre 2009

Exemple de message SOAP

POST /StockQuote HTTP/1.1

Host: www.stockquoteserver.com

Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn

SOAPAction: "Some-URI"

<SOAP-ENV:Envelope

  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body>

    <m:GetLastTradePrice xmlns:m="Some-URI">

        <symbol>DIS</symbol>

    </m:GetLastTradePrice>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Propre au portage sur HTTP

Page 22: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

22M.Romdhani, INSAT, Octobre 2009

Exemple de message de réponse

HTTP/1.1 200 OK

Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn

<SOAP-ENV:Envelope

  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Body>

    <m:GetLastTradePriceResponse xmlns:m="Some-URI">

        <Price>34.5</Price>

    </m:GetLastTradePriceResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Propre au portage sur HTTP

Page 23: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

23M.Romdhani, INSAT, Octobre 2009

Analyse de l’exemple

Des Balises Utilisateur

GetLastTradePriceResponse

Symbol

Price

Un Namespace Utilisateur

xmlns:m="Some-URI"

Des Balises SOAP

Enveloppe

Body

Un Namespace SOAP

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

Des informations dans la partie HTTP

Page 24: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

24M.Romdhani, INSAT, Octobre 2009

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

Exemple de SOAP HEADER<SOAP-ENV:Header>

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

</t:Transaction>

</SOAP-ENV:Header>

Page 25: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

25M.Romdhani, INSAT, Octobre 2009

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 26: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

26M.Romdhani, INSAT, Octobre 2009

Encodage

Un message SOAP contient des données typées. Il faut donc définir un moyen d’encoder ces données.

Vocabulaire SOAP :

Value (valeur d’une donnée) Simple value (string, integers,etc)

Compound value (array, struct, …)

Type (d’une value) Simple Type

Compound Type

Page 27: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

27M.Romdhani, INSAT, Octobre 2009

SOAP avec HTTP

SOAP peut être facilement porté sur Http Convient au mode Request/Response de Http Le message SOAP est mis dans une requête POST avec un content-

type text/xml Définition d’un header http : SOAPAction Utilisation des codes http (2xx, 4xx, 5xx)

Page 28: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

28M.Romdhani, INSAT, Octobre 2009

Le langage WSDL

Page 29: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

29M.Romdhani, INSAT, Octobre 2009

Présentation

Une description WSDL :

1. Décrit le type d’un service web (méthodes, types des paramètres)Cette description peut être comparée à la description IDL CORBA, elle peut servir à générer automatiquement des amorces.

2. Décrit les aspects techniques d’implantation d’un service web (quel est le protocole utilisé, quel est le l’adresse du service)Cette description sert à se connecter concrètement à un service web.

Page 30: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

30M.Romdhani, INSAT, Octobre 2009

Balises

Une description WSDL est un document XML qui commence par la balise definition et contient les balises suivantes :

types: cette balise décrit les types utilisés message: cette balise décrit la structure d’un message échangé portType: cette balise décrit un ensemble d’opérations (interface d’un

service web) operation: cette balise décrit une opération réalisée par le service web. Une opération

reçoit des messages et envois des messages.

binding: cette balise décrit le lien entre un protocole (http) et un portType.

service: cette balise décrit un service comme un ensemble de ports. port: cette balise décrit un port au travers duquel il est possible d’accéder à un

ensemble d’opérations. Un port référence un Binding

Page 31: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

31M.Romdhani, INSAT, Octobre 2009

Développer des Web services

avec Apache Axis

Page 32: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

32M.Romdhani, INSAT, Octobre 2009

Architecture (Serveur)

Axis fournit une Servlet (AxisServlet) qui reçoit des message SOAP sur http et qui transforme l’appel en un appel de méthode classique Java

Développer un Web Service revient alors à développer un objet Java et à enregistrer ses méthodes auprès de la Servlet AxisServlet.

Les clients envoient alors leurs messages SOAP sur http à AxisServlet.

Pour SMTP les clients envoient leurs messages par mail à un démon. Le démon reçoit ces messages et les renvoie sur http à AxisServlet.

Page 33: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

33M.Romdhani, INSAT, Octobre 2009

Architecture (Serveur)

JVM

Moteur de Servlet

AxisServlet

La Servlet AxisServlet reçoit et renvoie les messages SOAP et transmet aux objets Java correspondant Les Objets Java effectuent

les services. Ils sont des objets Java classiques.

Objets Java et Servlet sont dans la même JVM (pas de répartition).

SOAP/HTTP

Le client envoie des messages SOAP/HTTP

Page 34: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

34M.Romdhani, INSAT, Octobre 2009

Développement d’un Web Service

Développer une classe Java

public class MyFirstWebService {

public final String BOOK1 = "La méthode";

public final String BOOK2 = "Le Macroscope";

public int getPrice(String bookTitle) {

if (bookTitle.compareTo(BOOK1)==0) {

return 15;

}

else if (bookTitle.compareTo(BOOK2)==0) {

return 20;

}

else return 300;

}

}

Page 35: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

35M.Romdhani, INSAT, Octobre 2009

Déploiement un Web Service

Elaborer un descripteur SOAP de votre classe

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  

<service name="MyFirstWebService" provider="java:RPC">  

<parameter name="className"   value="MyFirstWebService"/>

  <parameter name="allowedMethods" value="*"/>  

</service>

</deployment>

Exporter le descripteur

java org.apache.axis.client.AdminClient deploy.wsdd

Page 36: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

36M.Romdhani, INSAT, Octobre 2009

Déploiement un Web Service

Le fichier jws sont les équivalents des jsp pour les Web Service.

Construction d’un fichier jws à partir d’une classe java: Copy MyFirstWebService.java /…/MyFirstWebService.jws

Page 37: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

37M.Romdhani, INSAT, Octobre 2009

Le Client à partir du WSDL

Génération d’un ensemble de classes facilitant l’envoi de message SOAP:

java org.apache.axis.wsdl.WSDL2Java file.wsdl

Classes générées:

Pour les Type

Pour les PortType

Pour les Binding

Pour les Port

Pour les Service

Page 38: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

38M.Romdhani, INSAT, Octobre 2009

Obtention du WSDL de l’exemple

Sous axis, dans un navigateur, mettre l’adresse du Web Service suivie de ?WSDL

http://localhost:8080/axis/jwspages/MyFirstWebService.jws?WSDL

Page 39: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

39M.Romdhani, INSAT, Octobre 2009

Développement avec JAX-WS 2.0

Page 40: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

40M.Romdhani, INSAT, Octobre 2009

Java API 4 XML-based Web Services

Successeur de JAX-RPC.

Actuellement en version 2.0

Permet de créer des services Web dans le conteneur Web dans le conteneur EJB

Supporte les injections de dépendances

Page 41: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

41M.Romdhani, INSAT, Octobre 2009

Exemple de Service

@javax.ejb.Stateless () // à supprimer si le service est créé dans un [email protected] ()public class SubjectInfo {

@javax.jws.WebMethodpublic String getSubjectInfo (String subjectID) {

...}@javax.jws.WebMethodpublic String [] getAllSubjects () {

...}

}

// Référencement du service à partir d'un client@WebServiceRef (wsdlLocation="http://xxx:8080/SubjectInfoService/SubjectInfo?wsdl")static SubjectInfoService service;

// Recherche du "port"SubjectInfo subjectInfo = service.getSubjectInfoPort ();System.out.println(subjectInfo.getSubjectInfo ("S07"));

Page 42: Chapitre 5 Web Services :  Le nouveau standard JAX-WS 2.0

Développement de Web services

42M.Romdhani, INSAT, Octobre 2009

Scénario de génération d'artéfacts

Créer le service et le compiler

Utiliser wsgen pour générer les artifacts

Assembler dans un WAR/JAR et le déployer

Utiliser wsimport pour générer les artifacts

Coder le client

Exécuter le client