Web Services.

Slides:



Advertisements
Présentations similaires
Les Web Services Schéma Directeur des Espaces numériques de Travail
Advertisements

Le struts validator – framework de validation
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
Introduction aux environnements répartis
Julien HERON.
Object Management Architecture (OMA)
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Cours 6 : Les Web Services et SOAP Mars Version 1.0 -
Cours 6 : Les Web Services et UDDI Mars Version 1.0 -
Cours 5 : Les Web Services et WSDL Mars Version 1.0 -
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
1 Les technologies XML Cours 4 : Les Web Services et XML- RPC Février Version 1.0 -
Cours 2 : Les Web Services Concepts Généraux
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Les Web Services.
Génie Documentiel Delacrétaz Jean-Marc
Introduction aux services WEB
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0
Les Services Web Avec.NET version 1.1. Un service Web en bref… Méthodes ou objets accessible à distance via SOAP (Simple Object Access Protocol ); SOAP.
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Rennes, le 18 septembre 2006 Support du paradigme maître-travailleur dans les applications à base de composants Tâche 2.2 Hinde Bouziane Réunion LEGO.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Introduction au paradigme orienté-objet (suite)
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Web Services HTTP UDDI SOAP WSDL Besnik SELJIMI, Novembre 2003
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Enseignant de cours : M. Bouzguenda Lotfi
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Travaux Pratiques Représentation des connaissances
CENTRALISATION DES CANDIDATS LOCATAIRES
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
JavaScript Nécessaire Web.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Créer des packages.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Tutorat en bio-informatique
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Les sockets.
Conférence Technique Java 2 Frédéric Jacquet. Au programme  Présenter les différents outils  Découverte - Java coté serveur  Appréhender l ’existant.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Module : Langage XML (21h)
Les Servlets Présentation Cycle de vie Principe de fonctionnement
eXtensible Markup Language. Généralités sur le XML.
Representational State Transfer - REST
21/02/2003DEA DISIC 1 Grid Computing Programming the grid: Distributed Software Components, P2P and Grid Web Services for Scientific Applications Tarak.
Web Services 17/01/2009.
Présentation TELW M2 Contexte : passage de la matière de M1 en M2 Transformation cours->TDs Sujet plus haut niveau basé : Web Services echanges au format.
Introduction aux technologies des web services en Java EE
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Universel Description Discovery and Integration « UDDI «
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Web Services Xavier Blanc Plan Principes XML (Notions) SOAP WSDL UDDI Axis Conclusion.
Transcription de la présentation:

Web Services

Plan SOAP WSDL UDDI Conclusion

Définition Les Web Services sont des services offerts via le web. Par 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.

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, …

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 l’interface, de l’URL et du port du Web Service. Utilise le système de typage de XML Schéma

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é

Notions nécessaires pour les Web Services XML Notions nécessaires pour les Web Services

Exemple de document XML <livre> <titre> le super livre </titre> <chapitre> <numero> 1 </numero> <titre> titre du chapitre 1 </titre> <contenu> blabla blabla </contenu> </chapitre> <chapitre> … </chapitre> </livre>

Grammaire Deux façons de définir une grammaire XML : DTD XML Schéma 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 lorsqu’il est conforme à une grammaire

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

Simple Object Access Protocol Version 1.1 SOAP Simple Object Access Protocol Version 1.1

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.

Exemple de message StockQuote est un ensemble de services qui permet d’obtenir des informations sur des actions boursières. GetLastTradePrice est le service qui permet de connaître la dernière valeur d’une action. Cet exemple présente un échange de messages entre un client qui veut savoir la valeur de l’action « DIS ».

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" <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

Exemple de message 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

Analyse de l’exemple Des Balises Utilisateur Un Namespace 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

Namespace SOAP Le namespace des balises SOAP http://schemas.xmlsoap.org/soap/envelope Le namespace de l’encodage SOAP http://schemas.xmlsoap.org/soap/encoding

Structure d’un message SOAP Framework 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.

SOAP Header Mécanisme d’extension du protocol SOAP Framework 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

SOAP Header Example <SOAP-ENV:Header> Framework SOAP Header Example <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI"> 5 </t:Transaction> </SOAP-ENV:Header>

SOAP Body Le Body contient le message à échanger Framework 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.

SOAP Fault Balise permettant de signaler des cas d’erreur. Framework 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.

Encoding 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

Encodage L’encodage c’est la représentation de valeurs sous forme XML. Encoding Encodage L’encodage c’est la représentation de valeurs sous forme XML. Le décodage c’est la construction de valeurs à partir d’XML L’XML 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 l’utilisateur Soit utilisation d’XML Schéma (préconisé)

Simple Types Type (XML Schema) <element name="age" type="int"/> Encoding Simple Types Type (XML Schema) <element name="age" type="int"/> <element name="color"> <simpleType base="xsd:string"> <enumeration value="Green"/> <enumeration value="Blue"/> </simpleType> </element> Valeurs <age>45</age> <color>Blue</color> Type XML Schema Construction de Type XML Schema

Encoding Simple Types La définition d’un XML Schéma pour tout type peut être fastidieux SOAP a défini deux façons de préciser le type d’une valeur sans définir le Schéma XML: <SOAP-ENC:int>45</SOAP-ENC:int> <cost xsi:type="xsd:float">29.5</cost>

Encoding Compound Types 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.

Struct Type (XML Schéma) <element name="Person"> Encoding Struct Type (XML Schéma) <element name="Person"> <complexType> <element name="name" type="xsd:string"/> <element name="age" type="xsd:int"/> </complexType> <element> Valeur <Person> <name>Xavier</name> <age>30</age> </Person>

Array Le type est directement précisé grâce aux balises SOAP: Encoding Array Le type est directement précisé grâce aux balises SOAP: <myFavoriteNumbers SOAP-ENC:arrayType="xsd:int[2] "> <SOAP-ENC:int>3</SOAP-ENC:int> <SOAP-ENC:int>4</SOAP-ENC:int> </myFavoriteNumbers>

SOAP avec HTTP SOAP peut être facilement porté sur Http. Convention 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)

SOAP avec HTTP POST /StockQuote HTTP/1.1 Convention SOAP avec HTTP 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>

SOAP avec HTTP HTTP/1.1 500 Internal Server Error Convention SOAP avec HTTP HTTP/1.1 500 Internal Server Error Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <SOAP-ENV:Body>     <SOAP-ENV:Fault>         <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Server Error</faultstring>     </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Web Services Description Language Version 1.1 WSDL Web Services Description Language Version 1.1

Présentation Une description WSDL : 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. 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.

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

Balises (avec XML Spy) Utilisé pour sectionner des descriptions WSDL

types Description en utilisant XML Schema. <wsdl:types> <xs:schema targetNameSpace="http://www.exemple.fr/personne.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="personne"> <xs:complexType> <xs:sequence> <xs:element name="nom" type="xs:string" /> <xs:element name="prenom" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types>

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

message Part de type simple Part qui utilise un XML Schema <wsdl:message name="personneMsg"> <wsdl:part name="nom" type="xsd:string" /> <wsdl:part name="prenom" type="xsd:string" /> </wsdl:message> Part qui utilise un XML Schema <wsdl:part name="personne" element="exemple:personne" /> Défini dans un XML Schema

portType Un portType permet d’identifier (nommer) de manière abstraite un ensemble d’opérations. <wsdl:portType name="descriptionPersonnes" > <wsdl:operation name="getPersonne" > … </wsdl:operation> <wsdl:operation name=“setPersonne" > </wsdl:portType>

operation WSDL définit 4 types d’opération : One-Way : lorsque les opérations reçoivent des messages mais n’en n’envoient 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 n’en reçoivent pas

operation Quelque soit le type d’opération la définition est sensiblement la même : Une opération : Reçoit des messages : <wsdl:input …> Envoie des messages : <wsdl:output …> ou <wsdl:fault …> La présence et l’ordre des input/outputs/fault dépendent du type de l’opération.

operation <wsdl:operation name="operation_name"> <wsdl:input name="nom_optionel" message="nom_message" /> </wsdl:operation> <wsdl:output name="nom_optionel" message="nom_message" /> <wsdl:fault name="nom_optionel" message="nom_message" />*

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

binding Un Binding : peut être identifié par un nom : name identifie le portType : type <wsdl:binding name="binding_name" type="nom du portType" > … </wsdl:binding>

binding SOAP Pour préciser que le binding est de type SOAP, il faut inclure la balise suivante : <soap:binding transport="uri" style="soap_style" /> 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

binding SOAP Pour chaque opération du portType : il faut préciser l’URI de l’opé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

Exemple <wsdl:binding type="descriptionPersonnes" > <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> <wsdl:operation name="getPersonne"> <soap:operation soapAction="http://www.exemple.fr/getPersonne" /> <wsdl:input> <soap:body use="encoded" encodingStyle="schemas.xmlsoap.org/soap/encoding"/> </wsdl:input> <wsdl:output> </wsdl:output> </wsdl:operation> </wsdl:binding>

service Un service est un ensemble de ports Un port a un portType Dans le cadre de SOAP, un port à une adresse (qui correspond à l’adresse http) <wsdl:service name=“MonService"> <wsdl:port binding="intf:MonServiceSoapBinding"> <soap:address location="http://mda.lip6.fr:8080/axis/services/MonService"/> </wsdl:port> </wsdl:service>

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

Universal Description Discovery and Integration Version 3.0 UDDI Universal Description Discovery and Integration Version 3.0

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.

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 d’un référentiel UDDI sont des Web Services !

Exemple Le référentiel UDDI de microsoft est accessible à http://uddi.microsoft.com Il est possible de parcourir ce référentiel à l’aide d’un navigateur pour : Rechercher un service. Ajouter un service au référentiel.

Exemple : search Façons de rechercher un service. Nous allons rechercher les Web Services de la société Amazon.

Exemple : search AmazonBusiness propose un Web Service Ce Web Service s’appelle GetBookPrice

Référentiels Type Accès Public : Privé ou d’entreprise Défini en WSDL Microsoft : uddi.microsoft.com IBM : www.ibm.com/services/uddi HP : uddi.hp.com SAP : udditest.sap.com Privé ou d’entreprise Accès Défini en WSDL JAXR définit une API pour naviguer dans un référentiel UDDI

A vous de jouer Quel est la place d’UDDI dans les Web Services ? Comparer les référentiels UDDI avec les moteurs de recherche style Yahoo et Google ? Quel est l’intérêt des référentiels UDDI d’entreprise ?

Axis Version 1.3

Introduction Implantation OpenSource de SOAP1.1 Communauté Apache 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

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 …

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.

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).

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;

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

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

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

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

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

Les classes générées à partir de l’exemple MyFirstWebService.java MyFirstWebServiceService.java MyFirstWebServiceLocator.java MyFirstWebServiceBindingStub.java

Un exemple de Client public class Client { public static void main(String[] args) { try { MyFirstWebServiceService service = new MyFirstWebServiceServiceLocator(); MyFirstWebService port = service.getMyFirstWebService(); String st = ""; int price = port.getPrice(st); System.out.println("Le prix est : "+price); } catch (Exception ex) { ex.printStackTrace(); }

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

Web Service : Un nouveau Buzz Word ? Conclusion Web Service : Un nouveau Buzz Word ?

Conclusion Avantages : Inconvénients : 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,…)

Références SOAP : http://www.w3.org/TR/SOAP/ WSDL : http://www.w3.org/TR/2001/NOTE-wsdl-20010315 UDDI : http://www.uddi.org/ Apache SOAP : http://xml.apache.org/soap/