Title: Web Services
1Web Services
- Xavier BlancXavier.Blanc_at_lip6.fr
2Plan
- Principes
- XML (Notions)
- SOAP
- WSDL
- UDDI
- Axis
- Conclusion
3Dé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.
4Principes
- Pourquoi un nouveau middleware
5Limitations 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
6Limitations 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
7Solutions existantes
- Modification du Protocole
- RMI / IIOP
- Passerelles
- CORBA vers DCOM
- Portage dapplications existantes difficile
- Solutions non standards
8Approche 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)
9Ex 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
10SOAP
- 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,
11WSDL
- 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
12UDDI
- 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é
13XML
- Notions nécessaires pour les Web Services
14Exemple 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
15Principes
- 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)
16Grammaire
- 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
17Espaces 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/"
18XML 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
19A 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 ?
20SOAP
- Simple Object Access Protocol Version 1.1
21Abstract
- 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.
22Exemple 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 .
23Exemple 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
24Exemple 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
25Analyse 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
26Namespace SOAP
- Le namespace des balises SOAP
- http//schemas.xmlsoap.org/soap/envelope
- Le namespace de lencodage SOAP
- http//schemas.xmlsoap.org/soap/encoding
27Structure 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.
28SOAP 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
29SOAP Header Example
Framework
- ltSOAP-ENVHeadergt
- lttTransaction xmlnst"some-URI"gt 5
- lt/tTransactiongt
- lt/SOAP-ENVHeadergt
30SOAP 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.
31SOAP 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.
32Encodage
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
33Encodage
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é)
34Simple 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
35Simple 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
36Compound 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.
37Struct
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
38Array
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
39SOAP 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)
40SOAP 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
41SOAP 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
42SOAP 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.
43A 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 ?
44WSDL
- Web Services Description Language
- Version 1.1
45Pré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.
46Balises
- 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
47Balises (avec XML Spy)
Utilisé pour sectionner des descriptions WSDL
48types
- 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
49message
- 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
50message
- 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
51portType
- 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
52operation
- 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
53operation
- 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.
54operation
- 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
55binding
- 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.
56binding
- Un Binding
- peut être identifié par un nom name
- identifie le portType type
- ltwsdlbinding name"binding_name"
- type"nom du portType" gt
-
- lt/wsdlbindinggt
57binding 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
58binding 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
59Exemple
- 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
60service
- 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
61A 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 ?
62UDDI
- Universal Description Discovery and Integration
- Version 3.0
63Introduction
- 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.
64Rô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 !
65Exemple
- 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.
66Exemple search
Façons de rechercher un service.
Nous allons rechercher les Web Services de la
société Amazon.
67Exemple search
AmazonBusiness propose un Web Service
Ce Web Service sappelle GetBookPrice
68Ré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
69A 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 ?
70Axis
71Introduction
- 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
72Servlet (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
73Architecture (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.
74Architecture (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).
75Dé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
-
76Dé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
77Dé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
78Le 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
79Le 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
80Obtention 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
81Les classes générées à partir de lexemple
- MyFirstWebService.java
- MyFirstWebServiceService.java
- MyFirstWebServiceLocator.java
- MyFirstWebServiceBindingStub.java
82Un 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()
-
-
83A vous de jouer
- Comparer cette approche avec CORBA ?
- A quoi sert le WSDL ?
- Comment se fait le mapping avec un langage de
programmation ?
84Conclusion
- Web Service Un nouveau Buzz Word ?
85Conclusion
- 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,)
86Ré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/