Web Services - PowerPoint PPT Presentation

1 / 86
About This Presentation
Title:

Web Services

Description:

Par exemple, un client demande le prix d'un article en envoyant un ... Actuellement WSDL 1.1. D finition de l'interface, de l'URL et du port du Web Service. ... – PowerPoint PPT presentation

Number of Views:88
Avg rating:3.0/5.0
Slides: 87
Provided by: xavier
Category:

less

Transcript and Presenter's Notes

Title: Web Services


1
Web Services
  • Xavier BlancXavier.Blanc_at_lip6.fr

2
Plan
  • Principes
  • XML (Notions)
  • SOAP
  • WSDL
  • UDDI
  • Axis
  • Conclusion

3
Définition
  • Les Web Services sont des services offerts via le
    web.
  • Par exemple, un client demande le prix dun
    article en envoyant un message sur le web. Ce
    message contient la référence de larticle. Le
    Web Service va recevoir la référence, effectuer
    le traitement du service et renvoyer le prix au
    client via un autre message.

4
Principes
  • Pourquoi un nouveau middleware

5
Limitations des middleware
  • Passage à large échelle Web
  • Protocoles hétérogènes
  • IIOP, RMI, DCOM
  • Firewall
  • Pas douverture des services
  • Notion de moteur de recherche inexistante
  • Trop de contraintes sur le client !
  • Doit posséder les souches
  • Difficulté de construire dynamiquement

6
Limitations des middleware
  • Inconvénients Intrinsèques
  • Complexité
  • CORBA IDL, Mapping,
  • EJB Container, JNDI,
  • Pérennité remise en question
  • CORBA, EJB, .Net,
  • Prix
  • Plates-formes
  • Compétences

7
Solutions existantes
  • Modification du Protocole
  • RMI / IIOP
  • Passerelles
  • CORBA vers DCOM
  • Portage dapplications existantes difficile
  • Solutions non standards

8
Approche Envisagée
  • Un nouveau Protocole SOAP
  • Basé sur XML
  • Portabilité, Hétérogénéité
  • Porté sur des protocoles large échelle existants
  • HTTP, SMTP,
  • Paradigme orienté service WSDL
  • Définition de services offerts (en XML)
  • Découverte automatique des services (dynamicité)
    UDDI
  • Référentiel de Web Service (Pages Jaunes, Vertes,
    Blanches)

9
Ex ModFact
Le serveur doit savoir recevoir des messages SOAP
(sur HTTP ou SMTP). Il effectue les traitements
correspondant (ici délégation vers CORBA).
Les clients doivent savoir envoyer des messages
SOAP (sur HTTP ou SMTP)
SOAP / HTTP
IIOP

SOAP / SMTP
Application existante classique (ici CORBA)
UDDI
Exportation du Web Service dans le référentiel
UDDI
Utilisation de UDDI pour construire dynamiquement
des client
10
SOAP
  • Protocole déchange de messages (client /
    serveur)
  • Basé entièrement sur XML
  • Standard W3C (Initiative IBM et Microsoft)
  • Actuellement SOAP 1.1
  • Concepts
  • Message Enveloppe ( Header Body )
  • Extensibilité
  • Porté sur HTTP, SMTP,

11
WSDL
  • Langage de définition de Web Services
  • Basé entièrement sur XML
  • Standard W3C (Initiative IBM et Microsoft)
  • Actuellement WSDL 1.1
  • Définition de linterface, de lURL et du port du
    Web Service.
  • Utilise le système de typage de XML Schéma

12
UDDI
  • Référentiel de définitions Web Service
  • Permet de construire dynamiquement des clients
  • Recommandation OASIS
  • Référentiel défini lui-même en WSDL
  • Référentiel Public / Privé

13
XML
  • Notions nécessaires pour les Web Services

14
Exemple de document XML
  • ltlivregt lttitregt le super livre
    lt/titregt ltchapitregt ltnumerogt 1
    lt/numerogt lttitregt titre du chapitre 1
    lt/titregt ltcontenugt blabla blabla
    lt/contenugt lt/chapitregt ltchapitregt lt/chapitr
    egt
  • lt/livregt

15
Principes
  • Ensemble non fini de balises
  • Lutilisateur peut créer de nouvelles balises
  • Définition de grammaires XML est un
    Meta-Langage
  • MathML, NewsML, XMI, Doc, Slides,
  • Séparation de la forme et du fond
  • Un document XML peut être constitué de deux
    entités (le fond et la forme)

16
Grammaire
  • Deux façons de définir une grammaire XML
  • DTD
  • Langage de définition de grammaire XML
  • Largement utilisé
  • Expression faible (type, structure)
  • XML Schéma
  • Langage XML de définition de grammaire XML
  • De en utilisé
  • Expression puissante (type, structure, héritage)
  • Un document XML est dit valide lorsquil est
  • conforme à une grammaire

17
Espaces de noms
  • Mécanismes permettant de partitionner les balises
    XML (permet davoir deux fois le même nom de
    balise)
  • Un espace de nom est défini dans nimporte quelle
    balise par lattribut xmlns et par une URI.
  • Dans un document XML, un espace de noms est
    identifié par un nom logique, les balises
    appartenant à cet espace doivent alors être
    préfixée par ce nom logique.
  • Ex
  • ltmetabody xmlnsmeta"http//meta.lip6.fr/meta/"

18
XML est un succès !
  • Standard W3C
  • La syntaxe XML ne contient que peu de mot clef
    Simplicité
  • XML est indépendant des plates-formes
    Portabilité
  • XML est un méta-langage, il est possible de créer
    ses propres balises Extensibilité
  • Outils disponibles (et gratuits)
  • Largement utilisé pour les échanges
  • inter-applications

19
A vous de jouer !
  • Pouvez-vous définir un document XML qui
    représente un message Client/Serveur ?
  • Quelles sont les informations que ce message doit
    contenir ?
  • Comment échanger ce message ?
  • Quels sont les problèmes soulevés ?

20
SOAP
  • Simple Object Access Protocol Version 1.1

21
Abstract
  • SOAP is a lightweight protocol for exchange of
    information in a decentralized, distributed
    environment.
  • It is an XML based protocol that consists of
    three parts an envelope that defines a framework
    for describing what is in a message and how to
    process it, a set of encoding rules for
    expressing instances of application-defined
    datatypes, and a convention for representing
    remote procedure calls and responses.
  • SOAP can potentially be used in combination with
    a variety of other protocols however, the only
    bindings defined in this document describe how to
    use SOAP in combination with HTTP and HTTP
    Extension Framework.

22
Exemple de message
  • StockQuote est un ensemble de services qui permet
    dobtenir des informations sur des actions
    boursières.
  • GetLastTradePrice est le service qui permet de
    connaître la dernière valeur dune action.
  • Cet exemple présente un échange de messages entre
    un client qui veut savoir la valeur de laction
    DIS .

23
Exemple de message
  • POST /StockQuote HTTP/1.1
  • Host www.stockquoteserver.com
  • Content-Type text/xml charset"utf-8"
  • Content-Length nnnn
  • SOAPAction "Some-URI"
  • ltSOAP-ENVEnvelope  xmlnsSOAP-ENV"http//schema
    s.xmlsoap.org/soap/envelope/"  SOAP-ENVencodingS
    tyle"http//schemas.xmlsoap.org/soap/encoding/"gt
    ltSOAP-ENVBodygt    ltmGetLastTradePrice
    xmlnsm"Some-URI"gt        ltsymbolgtDISlt/symbolgt 
       lt/mGetLastTradePricegtlt/SOAP-ENVBodygt
  • lt/SOAP-ENVEnvelopegt

Propre au portage sur HTTP
24
Exemple de message
  • HTTP/1.1 200 OK
  • Content-Type text/xml charset"utf-8"
  • Content-Length nnnn
  • ltSOAP-ENVEnvelope  xmlnsSOAP-ENV"http//schema
    s.xmlsoap.org/soap/envelope/"  SOAP-ENVencodingS
    tyle"http//schemas.xmlsoap.org/soap/encoding/"/gt
    ltSOAP-ENVBodygt    ltmGetLastTradePriceResponse
    xmlnsm"Some-URI"gt        ltPricegt34.5lt/Pricegt  
      lt/mGetLastTradePriceResponsegtlt/SOAP-ENVBodygt
  • lt/SOAP-ENVEnvelopegt

Propre au portage sur HTTP
25
Analyse de lexemple
  • Des Balises Utilisateur
  • GetLastTradePriceResponse
  • Symbol
  • Price
  • Un Namespace Utilisateur
  • xmlnsm"Some-URI"
  • Des Balises SOAP
  • Enveloppe
  • Body
  • Un Namespace SOAP
  • xmlnsSOAP-ENV"http//schemas.xmlsoap.org/soap/en
    velope/"
  • Des informations dans la partie HTTP

26
Namespace SOAP
  • Le namespace des balises SOAP
  • http//schemas.xmlsoap.org/soap/envelope
  • Le namespace de lencodage SOAP
  • http//schemas.xmlsoap.org/soap/encoding

27
Structure dun message SOAP
Framework
  • Un message SOAP est contenu dans une balise
    Envelope
  • Une Envelope peut contenir une balise Header
  • Une Header peut contenir nimporte quel ensemble
    de balises. Ces balises doivent appartenir à des
    namespaces.
  • Une Envelope doit contenir une balise Body
  • Un Body peut contenir nimporte quelle ensemble
    de balises. Ces balises peuvent appartenir à des
    namespaces.
  • Un Body peut contenir des balises Fault qui
    permettent didentifier des erreurs.

28
SOAP Header
Framework
  • Mécanisme dextension 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 nimporte quelle balise incluse
    dans un namespace

29
SOAP Header Example
Framework
  • ltSOAP-ENVHeadergt
  • lttTransaction xmlnst"some-URI"gt 5
  • lt/tTransactiongt
  • lt/SOAP-ENVHeadergt

30
SOAP Body
Framework
  • 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 nimporte quelle balise incluse
    optionnellement dans un namespace
  • Une entrée peut être une Fault.

31
SOAP Fault
Framework
  • Balise permettant de signaler des cas derreur.
  • La balise Fault contient les balises suivantes
  • faultcode un code permettant didentifier le
    type derreur
  • Client, Server, VersionMismatch, MustUnderstand
  • faultstring une explication en langage naturel
  • faultactor une information identifier
    linitiateur de lerreur
  • detail Définition précise de lerreur.

32
Encodage
Encoding
  • Un message SOAP contient des données typées. Il
    faut donc définir un moyen dencoder ces données.
  • Vocabulaire SOAP
  • Value (valeur dune donnée)
  • Simple value (string, integers,etc)
  • Compound value (array, struct, )
  • Type (dune value)
  • Simple Type
  • Compound Type

33
Encodage
Encoding
  • Lencodage cest la représentation de valeurs
    sous forme XML.
  • Le décodage cest la construction de valeurs à
    partir dXML
  • LXML qui représente les valeurs a une structure
    qui dépend du type des valeurs
  • Il faut donc définir le type
  • Soit mécanisme définit par lutilisateur
  • Soit utilisation dXML Schéma (préconisé)

34
Simple Types
Encoding
  • Type (XML Schema)
  • ltelement name"age" type"int"/gt
  • ltelement name"color"gt
  • ltsimpleType base"xsdstring"gt
  • ltenumeration value"Green"/gt
  • ltenumeration value"Blue"/gt
  • lt/simpleTypegt
  • lt/elementgt
  • Valeurs
  • ltagegt45lt/agegt
  • ltcolorgtBluelt/colorgt

Type XML Schema
Construction de Type XML Schema
35
Simple Types
Encoding
  • La définition dun XML Schéma pour tout type peut
    être fastidieux
  • SOAP a défini deux façons de préciser le type
    dune valeur sans définir le Schéma XML
  • ltSOAP-ENCintgt45lt/SOAP-ENCintgt
  • ltcost xsitype"xsdfloat"gt29.5lt/costgt

36
Compound Types
Encoding
  • Une structure est un type composé dans lequel les
    membres sont accessibles uniquement grâce à des
    noms différents.
  • Un tableau est un type composé dans lequel les
    membres sont accessibles uniquement grâce à leur
    position.

37
Struct
Encoding
  • Type (XML Schéma)
  • ltelement name"Person"gt
  • ltcomplexTypegt
  • ltelement name"name" type"xsdstring"/gt
  • ltelement name"age" type"xsdint"/gt
  • lt/complexTypegt
  • ltelementgt
  • Valeur
  • ltPersongt
  • ltnamegtXavierlt/namegt
  • ltagegt28lt/agegt
  • lt/Persongt

38
Array
Encoding
  • Le type est directement précisé grâce aux balises
    SOAP
  • ltmyFavoriteNumbers SOAP-ENCarrayType"xsdint2
    "gt
  • ltSOAP-ENCintgt3lt/SOAP-ENCintgt
  • ltSOAP-ENCintgt4lt/SOAP-ENCintgt
  • lt/myFavoriteNumbersgt

39
SOAP avec HTTP
Convention
  • 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 dun header http SOAPAction
  • Utilisation des codes http (2xx, 4xx, 5xx)

40
SOAP avec HTTP
Convention
  • POST /StockQuote HTTP/1.1
  • Host www.stockquoteserver.com
  • Content-Type text/xml charset"utf-8"
  • Content-Length nnnn
  • SOAPAction "Some-URI"
  • ltSOAP-ENVEnvelope  xmlnsSOAP-ENV"http//schema
    s.xmlsoap.org/soap/envelope/"  SOAP-ENVencodingS
    tyle"http//schemas.xmlsoap.org/soap/encoding/"gt
    ltSOAP-ENVBodygt    ltmGetLastTradePrice
    xmlnsm"Some-URI"gt        ltsymbolgtDISlt/symbolgt 
       lt/mGetLastTradePricegtlt/SOAP-ENVBodygt
  • lt/SOAP-ENVEnvelopegt

41
SOAP avec HTTP
Convention
  • HTTP/1.1 500 Internal Server Error
  • Content-Type text/xml charset"utf-8"
  • Content-Length nnnn
  • ltSOAP-ENVEnvelope  xmlnsSOAP-ENV"http//schema
    s.xmlsoap.org/soap/envelope/"/gtltSOAP-ENVBodygt  
      ltSOAP-ENVFaultgt        ltfaultcodegtSOAP-ENVSer
    verlt/faultcodegt
  • ltfaultstringgtServer Errorlt/faultstringgt    lt/SO
    AP-ENVFaultgtlt/SOAP-ENVBodygt
  • lt/SOAP-ENVEnvelopegt

42
SOAP RPC
Convention
  • Pour faire un RPC SOAP, il faut
  • LURI de lobjet cible
  • Le nom de la méthode
  • Les paramètres de la méthode
  • SOAP sappuie sur le protocole den dessous
    (http) pour lURI de lobjet.
  • Le nom de la méthode et les paramètres sont
    encodés dans le message SOAP sous forme de
    structure.

43
A vous de jouer !
  • Comparer SOAP par rapport à CORBA ?
  • IDL ?
  • IIOP ?
  • SOAP est-il dédié uniquement au RPC ?
  • Si non, à quoi dautre ?
  • Quel est lintérêt de porter SOAP sur dautres
    protocoles ?

44
WSDL
  • Web Services Description Language
  • Version 1.1

45
Présentation
  • Une description WSDL
  • Décrit le type dun 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.
  • Décrit les aspects techniques dimplantation dun
    service web (quel est le protocole utilisé, quel
    est le ladresse du service)Cette description
    sert à se connecter concrètement à un service web.

46
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 dun
    message échangé
  • portType cette balise décrit un ensemble
    dopérations (interface dun 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 daccéder à un ensemble
    dopérations. Un port référence un Binding

47
Balises (avec XML Spy)
Utilisé pour sectionner des descriptions WSDL
48
types
  • Description en utilisant XML Schema.
  • ltwsdltypesgt
  • ltxsschema
  • targetNameSpace"http//www.exemple.fr/personne
    .xsd"
  • xmlnsxs"http//www.w3.org/2001/XMLSchema"gt
  • ltxselement name"personne"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"nom" type"xsstring"
    /gt
  • ltxselement name"prenom"
    type"xsstring" /gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • lt/xsschemagt
  • lt/wsdltypesgt

49
message
  • Les messages sont envoyés entre deux
    interlocuteurs (ex une opération reçoit des
    message et envoie des messages.
  • Un message est composé de plusieurs part
  • Deux façons de définir des part
  • Soit une part est un élément de type simple
  • Soit une part est un élément XML dont le type est
    défini dans un XML Schema

50
message
  • Part de type simple
  • ltwsdlmessage name"personneMsg"gt
  • ltwsdlpart name"nom" type"xsdstring" /gt
  • ltwsdlpart name"prenom" type"xsdstring" /gt
  • lt/wsdlmessagegt
  • Part qui utilise un XML Schema
  • ltwsdlmessage name"personneMsg"gt
  • ltwsdlpart name"personne" element"exempleperso
    nne" /gt
  • lt/wsdlmessagegt

Défini dans un XML Schema
51
portType
  • Un portType permet didentifier (nommer) de
    manière abstraite un ensemble dopérations.
  • ltwsdlportType name"descriptionPersonnes" gt
  • ltwsdloperation name"getPersonne" gt
  • lt/wsdloperationgt
  • ltwsdloperation namesetPersonne" gt
  • lt/wsdloperationgt
  • lt/wsdlportTypegt

52
operation
  • WSDL définit 4 types dopération
  • One-Way lorsque les opérations reçoivent des
    messages mais nen nenvoient pas
  • Request-response lorsque les opérations
    reçoivent des messages puis renvoient des
    messages
  • Solicit-response lorsque les opérations
    envoient des messages puis en reçoivent
  • Notification lorsque les opérations envoient
    des messages mais nen reçoivent pas

53
operation
  • Quelque soit le type dopération la définition
    est sensiblement la même
  • Une opération
  • Reçoit des messages ltwsdlinput gt
  • Envoie des messages ltwsdloutput gt ou
    ltwsdlfault gt
  • La présence et lordre des input/outputs/fault
    dépendent du type de lopération.

54
operation
  • ltwsdloperation name"operation_name"gt
  • ltwsdlinput name"nom_optionel"
    message"nom_message" /gt
  • lt/wsdloperationgt
  • ltwsdloperation name"operation_name"gt
  • ltwsdloutput name"nom_optionel"
    message"nom_message" /gt
  • ltwsdlinput name"nom_optionel"
    message"nom_message" /gt
  • ltwsdlfault name"nom_optionel"
    message"nom_message" /gt
  • lt/wsdloperationgt
  • ltwsdloperation name"operation_name"gt
  • ltwsdlinput name"nom_optionel"
    message"nom_message" /gt
  • ltwsdloutput name"nom_optionel"
    message"nom_message" /gt
  • ltwsdlfault name"nom_optionel"
    message"nom_message" /gt
  • lt/wsdloperationgt

55
binding
  • WSDL permet de lier une description abstraite
    (portType) à un protocole.
  • Chacune des opérations dun portType pourra être
    liée de manière différente.
  • Le protocole SOAP est un des protocole qui peut
    être utilisé.
  • Dautres binding sont standardisés par WSDL
    HTTP et MIME.

56
binding
  • Un Binding
  • peut être identifié par un nom name
  • identifie le portType type
  • ltwsdlbinding name"binding_name"
  • type"nom du portType" gt
  • lt/wsdlbindinggt

57
binding SOAP
  • Pour préciser que le binding est de type SOAP, il
    faut inclure la balise suivante
  • ltsoapbinding transport"uri" style"soap_style"
    /gt
  • Transport définit le type de transport
  • http//schemas.xmlsoap.org/soap/http pour
    utiliser SOAP/HTTP
  • Style définit la façon dont sont créer les
    messages SOAP de toutes les opérations
  • rpc Encodage RPC défini par SOAP RPC
  • document Encodage sous forme délément XML

58
binding SOAP
  • Pour chaque opération du portType
  • il faut préciser lURI de lopération
    soapAction
  • Il est aussi possible de repréciser la façon dont
    sont créés les messages SOAP style
  • Pour chaque message de chaque opération, il faut
    définir comment sera créé le message SOAP

59
Exemple
  • ltwsdlbinding type"descriptionPersonnes" gt
  • ltsoapbinding
  • transport"http//schemas.xmlsoap.org/soap/http"
  • style"rpc" /gt
  • ltwsdloperation name"getPersonne"gt
  • ltsoapoperation soapAction"http//www.exemple.f
    r/getPersonne" /gt
  • ltwsdlinputgt
  • ltsoapbody use"encoded"
  • encodingStyle"schemas.xmlsoap.org/soap/en
    coding"/gt
  • lt/wsdlinputgt
  • ltwsdloutputgt
  • ltsoapbody use"encoded"
  • encodingStyle"schemas.xmlsoap.org/soap/en
    coding"/gt
  • lt/wsdloutputgt
  • lt/wsdloperationgt
  • lt/wsdlbindinggt

60
service
  • Un service est un ensemble de ports
  • Un port a un portType
  • Dans le cadre de SOAP, un port à une adresse (qui
    correspond à ladresse http)
  • ltwsdlservice nameMonService"gt
  • ltwsdlport binding"intfMonServiceSoapBinding"gt
  • ltsoapaddress location"http//mda.lip6.fr808
    0/axis/services/MonService"/gt
  • lt/wsdlportgt
  • lt/wsdlservicegt

61
A vous de jouer
  • Comparer WSDL à IDL ?
  • Expliquer les dépendances entre SOAP et WSDL ?
  • Quel est le point le plus délicat lors dun
    passage à une implémentation ?

62
UDDI
  • Universal Description Discovery and Integration
  • Version 3.0

63
Introduction
  • Web services are meaningful only if potential
    users may find information sufficient to permit
    their execution.
  • The focus of Universal Description Discovery
    Integration (UDDI) is the definition of a set of
    services supporting the description and discovery
    of
  • (1) businesses, organizations, and other Web
    services providers,
  • (2) the Web services they make available, and
  • (3) the technical interfaces which may be used to
    access those services.
  • Based on a common set of industry standards,
    including HTTP, XML, XML Schema, and SOAP, UDDI
    provides an interoperable, foundational
    infrastructure for a Web services-based software
    environment for both publicly available services
    and services only exposed internally within an
    organization.

64
Rôles
  • Un référentiel UDDI joue 3 rôles
  • Pages blanches le référentiel comporte des
    informations sur les fournisseurs de services.
  • Pages Jaunes le référentiel comporte des
    critères de catégorisation de services.
  • Pages vertes le référentiel comporte des
    informations techniques (WSDL).
  • Les services dun référentiel UDDI sont des Web
    Services !

65
Exemple
  • Le référentiel UDDI de microsoft est accessible à
    http//uddi.microsoft.com
  • Il est possible de parcourir ce référentiel à
    laide dun navigateur pour
  • Rechercher un service.
  • Ajouter un service au référentiel.

66
Exemple search
Façons de rechercher un service.
Nous allons rechercher les Web Services de la
société Amazon.
67
Exemple search
AmazonBusiness propose un Web Service
Ce Web Service sappelle GetBookPrice
68
Référentiels
  • Type
  • Public
  • Microsoft uddi.microsoft.com
  • IBM www.ibm.com/services/uddi
  • HP uddi.hp.com
  • SAP udditest.sap.com
  • Privé ou dentreprise
  • Accès
  • Défini en WSDL
  • JAXR définit une API pour naviguer dans un
    référentiel UDDI

69
A vous de jouer
  • Quel est la place dUDDI dans les Web Services ?
  • Comparer les référentiels UDDI avec les moteurs
    de recherche style Yahoo et Google ?
  • Quel est lintérêt des référentiels UDDI
    dentreprise ?

70
Axis
  • Version 1.0

71
Introduction
  • Implantation OpenSource de SOAP1.1
  • Java
  • Communauté Apache
  • Apache, Tomcat, Xerces, Struts, Cocoon
  • Support Server
  • Servlet qui reçoit et envoie des messages SOAP
    HTTP (pont SMTP)
  • Support Client
  • API pour envoyer des messages SOAP sur HTTP et
    SMTP

72
Servlet (Notion)
  • Une Servlet est un objet Java qui fonctionne en
    mode requête/reponse
  • Une Servlet http est une serlvet qui est capable
    de traiter des requête http et qui est capable de
    renvoyer des réponses http.
  • Un moteur (container) de Servlet est une
    application qui reçoit des requêtes http et qui
    les transmet aux Servlet
  • Tomcat (couplage avec Apache), Websphere
    (couplage avec IBM http Server), Weblogic

73
Architecture (Serveur)
  • Axis fournit une Servlet (AxisServlet) qui reçoit
    des message SOAP sur http et qui transforme
    lappel 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.

74
Architecture (Serveur)
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.
AxisServlet
SOAP/HTTP
Moteur de Servlet
Le client envoie des messages SOAP/HTTP
JVM
Objets Java et Servlet sont dans la même JVM (pas
de répartition).
75
Développement dun 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

76
Déploiement un Web Service
  • Elaborer un descripteur SOAP de votre classe
  • ltdeployment xmlns"http//xml.apache.org/axis/wsdd
    /"
  •             xmlnsjava"http//xml.apache.org/axis
    /wsdd/providers/java"gt  
  • ltservice name"MyFirstWebService"
    provider"javaRPC"gt  
  • ltparameter name"className 
  • value"MyFirstWebService"/gt
  •   ltparameter name"allowedMethods" value""/gt
     
  • lt/servicegt
  • lt/deploymentgt
  • Exporter le descripteur
  • java org.apache.axis.client.AdminClient
    deploy.wsdd

77
Déploiement un Web Service
  • Le fichier jws sont les équivalents des jsp pour
    les Web Service.
  • Construction dun fichier jws à partir dune
    classe java
  • Copy MyFirstWebService.java //MyFirstWebService.j
    ws

78
Le Client à partir du WSDL
  • Génération dun ensemble de classes facilitant
    lenvoi 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

79
Le Client à partir du WSDL
  • Construction du client
  • Instancier un Service
  • Obtenir un Port à partir du Service
  • Utiliser les méthodes du Port
  • Construire les paramètres en fonction des Types

80
Obtention du WSDL de lexemple
  • Sous axis, dans un navigateur, mettre ladresse
    du Web Service suivie de ?WSDL
  • http//localhost8080/axis/jwspages/MyFirstWebServ
    ice.jws?WSDL

81
Les classes générées à partir de lexemple
  • MyFirstWebService.java
  • MyFirstWebServiceService.java
  • MyFirstWebServiceLocator.java
  • MyFirstWebServiceBindingStub.java

82
Un exemple de Client
  • public class Client
  • public static void main(String args)
  • try
  • MyFirstWebServiceService service
  • new MyFirstWebServiceServiceLocator()
  • MyFirstWebService port service.getMyFirstWebS
    ervice()
  • String st ""
  • int price port.getPrice(st)
  • System.out.println("Le prix est "price)
  • catch (Exception ex)
  • ex.printStackTrace()

83
A vous de jouer
  • Comparer cette approche avec CORBA ?
  • A quoi sert le WSDL ?
  • Comment se fait le mapping avec un langage de
    programmation ?

84
Conclusion
  • Web Service Un nouveau Buzz Word ?

85
Conclusion
  • Avantages
  • Des standards simples (SOAP, WSDL, UDDI)
  • Multi Protocole / Multi OS / Multi Langage
  • Paradigme de Service
  • Des outils (éditeurs et moteurs)
  • Inconvénients
  • Typage (pas de consensus)
  • Performance
  • Jeunesse (Sécurité, Transaction,)

86
Références
  • SOAP http//www.w3.org/TR/SOAP/
  • WSDL http//www.w3.org/TR/2001/NOTE-wsdl-2001031
    5
  • UDDI http//www.uddi.org/
  • Apache SOAP http//xml.apache.org/soap/
Write a Comment
User Comments (0)
About PowerShow.com