Cours 5 : Web services - Idir AIT SADOUNE
Transcription
Cours 5 : Web services - Idir AIT SADOUNE
Mineure Architectures Orientées Services SOA – Web Services Mineure SOA Web Services Idir AIT SADOUNE [email protected] Idir AIT SADOUNE - <[email protected]> Mineure Architectures Orientées Services SOA – Web Services Plan ① Qu'est-ce qu'un Web Service ? 1. 2. 3. 4. Définition et principe Rappels sur le protocole HTTP Rappels sur le langage XML Implémentation des Web Services ② Les Web Services WS-* 1. 2. 3. 4. Standards et acteurs Principales technologies : WSDL, SOAP, UDDI Exposer une application Java sous la forme d'un Web Service WS-* Appeler un Web Service WS-* en Java ③ Les Web Services RESTful 1. 2. 3. vendredi 5 décembre 2014 Principes Appeler un Web Service RESTful en Java Exposer une application Java sous la forme d'un Web Service RESTful Idir AIT SADOUNE - <[email protected]> 2 Mineure Architectures Orientées Services SOA – Web Services Qu’est ce qu’un Web Service Définitions et principes Web Service = Service + Web ? o Service = fonctionnalité mise à disposition et exécutée par un fournisseur lorsqu'elle est invoquée par un consommateur réutilisable + composable + indépendant + granularité variable o Interface : o Définit l'usage du service (syntaxe, sémantique, qualité) ☛ contrat o Masque l'implémentation du service pour un couplage consommateur/fournisseur faible o Format pivot : langage commun pour décrire et échanger les données o Web Service = service mis à disposition sur Internet o o o o Associé à une URL sur le web HTTP Accessible via des protocoles internet standard Accessible indépendamment des technologies d’implémentation Auto-descriptif XML vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 3 Mineure Architectures Orientées Services SOA – Web Services Qu’est ce qu’un Web Service Définitions et principes Principe des Web Services Annuaire de services Découverte HTTP + XML Publication Client Fournisseur Internet Application Web Service Utilisation vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> Interface 4 Mineure Architectures Orientées Services SOA – Web Services Qu’est ce qu’un Web Service Définitions et principes Utilisation d’un Web Service Fournisseur Annuaire Client Enregistrement Déploiement du service Recherche du service A Voici l’adresse du serveur qui héberge A Quel format utiliser pour le service A ? Contrat de service Requête Réponse vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> HTTP + XML 5 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le protocole HTTP HTTP (Hyper Text Transfer Protocol) o Protocole de communication dédié au web o Chaque ressource du web est identifiée par une URL o Mode de communication = requête / réponse o Requête o Méthode de requête + nom ressource o Lecture : GET, HEAD… o Modification : POST, PUT, DELETE… o En-tête : nom du serveur, … o Réponse o En-tête : code de statut, type de serveur, type de contenu… o Contenu de la ressource demandée o Non conservation de l’état entre deux couples requête/réponse vendredi 5 décembre 2014 GET /index.html HTTP/1.1 Host: www.example.com HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Idir AIT SADOUNE - <[email protected]> 6 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le protocole HTTP Exemple o Accès en lecture à une page web pour affichage dans un navigateur Serveur web www.free.fr Client 1 – Requête : GET http://idir.aitsadoune.free.fr/index. html 3 – Affichage : interprétation HTML …\htdocs\idir.aitsadoune\ HTML HTML index. html 2 – Réponse : contenu de index.html index. html vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 7 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le protocole HTTP Multipurpose Internet Mail Extension o MIME : Standard définissant le type et le format de contenus échangés sur internet o Contenu textuel : langue, codage des caractères… o Contenu multimédia (images, sons, films…) : type de média… o Transfert sous forme binaire o Contenus multiples (pièces jointes…) o Utilisé pour les emails avec SMTP o Utilisé pour le web avec HTTP o En-tête : « Content-Type: type/sous-type » o o o o text/xml audio/mpeg image/jpeg application/pdf vendredi 5 décembre 2014 HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Idir AIT SADOUNE - <[email protected]> 8 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le langage XML XML (eXtensible Markup Language) o Standard du W3C depuis 1998 o XML = langage permettant de structurer des données de manière logique o Extensible o Indépendant des plates-formes et des systèmes d’exploitation o Concernant uniquement le contenu, pas la forme (apparence) o Document XML = structure arborescente auto-descriptive o Structure des données = balises personnalisées (« tags ») o Données = texte personne prenom nom Gaston Lagaffe date_naissance compagnie vendredi 5 décembre 2014 adresse boite_postale ville poids taille unite 180 cm code_postal pays Idir AIT SADOUNE - <[email protected]> 9 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le langage XML Exemple de document XML <?xml version="1.0" encoding="UTF-8"?> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> <date_naissance>30/03/1976</date_naissance> <adresse> <compagnie>Journal Spirou</compagnie> <boite_postale>355</ boite_postale > <ville>Paris Cedex</ville> <code_postal>75116</ code_postal > <pays code="ISO-3166">FR</pays> </adresse> <taille unite="cm">180</taille> <poids unite="kg">70</ poids > </personne> prenom nom Gaston Lagaffe date_naissance compagnie vendredi 5 décembre 2014 personne adresse boite_postale ville poids taille unite 180 cm code_postal pays Idir AIT SADOUNE - <[email protected]> 10 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Rappels sur le langage XML Validité d’un document XML o Grammaire = définition d’un vocabulaire valide et de règles de structure o Pour XML, grammaire = schéma o Définit les balises et leurs attributs o Définit les contraintes de structure des documents o XML Schema (XSD) = un des langages de description de schémas <xsd:element name="personne"> <xsd:complexType> <xsd:sequence> <xsd:element name="prenom" type="xsd:string"/> <xsd:element name="nom" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne> o Espace de noms = préfixe permettant d’éliminer les conflits lorsque plusieurs balises ont des noms identiques, URL (fictive) utilisée comme identifiant <liv:auteur xmlns:liv="http://livres">…</liv:auteur> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 11 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Implémentation des Web Services Implémentation (hors annuaire) Client Application Fournisseur Internet Web Service Interface o Implémentation côté client et côté fournisseur : o Application « métier » ☛ toutes technologies possibles (Java, .NET, PHP…) o Traitements liés au protocole, basé sur HTTP/XML ☛ deux grandes familles : famille WS-* et famille RESTful vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 12 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Implémentation des Web Services Côté fournisseur Client Fournisseur Internet Application Web Service Interface o Pour créer un Web Service : 1. 2. 3. 4. 5. Définir le contrat du service Développer le service Développer la couche de traitement XML Déployer sur le serveur Publier dans l’annuaire vendredi 5 décembre 2014 Suivant les technologies, certaines tâches sont automatisées… Idir AIT SADOUNE - <[email protected]> 13 Mineure Architectures Orientées Services SOA – Web Services Qu’est-ce qu’un Web Service Implémentation des Web Services Côté client Client Fournisseur Internet Application Web Service Interface o Pour créer une application cliente : 1. 2. 3. 4. 5. Rechercher le service dans l'annuaire Suivant les technologies, certaines Récupérer le contrat du service tâches sont automatisées… Créer un stub/proxy Développer la couche de traitement XML Utiliser le service et présenter les résultats (rendu) vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 14 Mineure Architectures Orientées Services SOA – Web Services Plan ① Qu'est-ce qu'un Web Service ? 1. 2. 3. 4. Définition et principe Rappels sur le protocole HTTP Rappels sur le langage XML Implémentation des Web Services ② Les Web Services WS-* 1. 2. 3. 4. Standards et acteurs Principales technologies : WSDL, SOAP, UDDI Exposer une application Java sous la forme d'un Web Service WS-* Appeler un Web Service WS-* en Java ③ Les Web Services RESTful 1. 2. 3. vendredi 5 décembre 2014 Principes Appeler un Web Service RESTful en Java Exposer une application Java sous la forme d'un Web Service RESTful Idir AIT SADOUNE - <[email protected]> 15 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Standards et acteurs Principales technologies Annuaire de services SOAP/UDDI Découverte SOAP/UDDI Publication Client Fournisseur Internet Application Web Service Utilisation SOAP vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> Interface WSDL 16 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Standards et acteurs « Galaxie » des standards WS-* vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 17 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Standards et acteurs Acteurs majeurs o W3C (World Wide Web Consortium) o Consortium académique international fondé en 1994 o Principal organisme de standardisation concernant le web o HTTP, URI, HTML, XML… o A l’origine des technologies qui forment la base des Web Services o SOAP, WSDL o Mécanisme de recommandations o OASIS (Organization for the Advancement of Structured Information Standards) o Consortium international d’éditeurs de logiciel o Objectif = développement, convergence et adoption de standards e-business o Organisme le plus productif dans le domaine des Web Services : o UDDI, BPEL, WSRP, WS-Security, SAML, WS-Transactions… vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 18 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Principales technologies Annuaire de services SOAP/UDDI Découverte SOAP/UDDI Publication Client Fournisseur Internet Application Web Service Utilisation SOAP vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> Interface WSDL 19 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI WSDL (Web Service Description Language) o Standard du W3C o Version 1.1 en 2001 o Version 2.0 en 2007, encore peu supporté par les outils o Objectif = décrire l'interface publique d'un Web Service (contrat de service) o Grammaire dérivée d’XML o Interface d’un Web Service avec WSDL o Web Service = ensemble de ports de connexions mettant à disposition des opérations qui reçoivent et envoient des messages o Deux types d’informations o Fonctionnelles : interface du service (signature des méthodes…) o Techniques : URL, protocole… o Fichier WSDL utilisable par des outils de génération de code vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 20 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Structure d’un fichier WSDL 1.1 Service Informations techniques Nom et adresse (URL) du service Port Port Binding Binding Protocole de transport et format des messages PortType Operation Interface du service (fonctionnelle) Input Operation Output Message Part vendredi 5 décembre 2014 Noms, types et ordre des paramètres Part Idir AIT SADOUNE - <[email protected]> Type Type Type 21 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Structure d’un fichier WSDL 1.1 <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" …> <types> […] </types> <message […]><part […]/></message> <portType […]> <operation […]> <input […] /> <output […] /> </operation> </portType> Interface du service (fonctionnelle) <binding […]>[…]</binding> <service […]> <port […]>[…]</port> </service> Informations techniques </definitions> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 22 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI WSDL : exemple d’interface de service o Avec des types simples <portType name="Hello"> <operation name="sayHello"> <input message="tns:sayHello" /> <output message="tns:sayHelloResponse" /> </operation> </portType> <message name="sayHello"> <part name="n" type="xsd:string" /> </message> <message name="sayHelloResponse"> <part name="return" type="xsd:string" /> </message> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 23 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI WSDL : exemple d’interface de service o Avec des types complexes o Déclarés dans un fichier XSD (XMLSchema) séparé o Ou déclarés dans le fichier WSDL <part name="parameters" element="sayHello" /> <xsd:element name="sayHello" > <xsd:complexType> <xsd:sequence> <xsd:element name="n" type="xs:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> Attention aux espaces de noms ! vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 24 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI WSDL : exemple d’informations techniques <binding name="HelloPortBinding" type="tns:Hello"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sayHello"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="HelloService"> <port name="HelloPort" binding="tns:HelloPortBinding"> <soap:address location="REPLACE_WITH_ACTUAL_URL"/> </port> </service> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 25 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Principales technologies Annuaire de services SOAP/UDDI Découverte SOAP/UDDI Publication Client Fournisseur Internet Application Web Service Utilisation SOAP vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> Interface WSDL 26 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI SOAP (Simple Object Access Protocol) o Standard du W3C o Version1.2 en 2003 o Objectif = formater les requêtes et les réponses échangées entre client et Web Service pour le transport (notamment sur HTTP) o Grammaire dérivée d’XML <Envelope> o Définit principalement o Un modèle de structure pour les requêtes et les réponses (messages) o Envelope : obligatoire, définit un message SOAP o Header : optionnel, informations non applicatives (sécurité…) ou destinées aux intermédiaires o Body : décrit la requête ou la réponse <Header> <transId>1234</transId> </Header> <Body> <add> <varx>3</varx> <vary>4</varY> </add> </Body> </Envelope> o Un modèle de traitement des messages vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 27 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI SOAP : Exemple o Requête : sayHello("Robert") <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns:sayHello xmlns:ns="http://hello/"> <n>Robert</n> </ns:sayHello> </soap:Body> </soap:Envelope> o Réponse : "Hello dear Robert !" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns:sayHelloResponse xmlns:ns="http://hello/"> <return>Hello dear Robert !</return> </ns:sayHelloResponse> </soap:Body> </soap:Envelope> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 28 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Principales technologies Annuaire de services SOAP/UDDI Découverte SOAP/UDDI Publication Client Fournisseur Internet Application Web Service Utilisation SOAP vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> Interface WSDL 29 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI UDDI o UDDI : Unversal Discovery Description and Integration o Standard porté par un consortium d’industriels o Version 3 en 2005 o Objectif = publication et découverte de Web Services sur un réseau o Définit : o UDDI Business Registry (UBR) = annuaire pour permettre d'automatiser les communications entre prestataires, clients, etc. (orienté « business ») o Méthodes de publications (basées sur SOAP) o Méthodes de consultation (basées sur SOAP) Pages blanches Pages jaunes Nom de la société Information sur les contacts Description texte Identifications (DUNS, SIRET, etc.) vendredi 5 décembre 2014 Index services et produits Code d’industrie (APE, etc.) Index géographique Taxonomie Pages vertes Procédures e-business Descriptions technique des services Paramètres des services Idir AIT SADOUNE - <[email protected]> 30 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Publication d’un service o Le référencement du service est important !!! o Différents types de registres o Registre public (seekda.com, xmethods.net…) o Registre de branche o Registre privé o A l’heure actuelle les registres sont majoritairement privés (internes aux entreprises) o Indexation par une ou plusieurs catégories dans la taxonomie du registre vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 31 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Principales technologies : WSDL, SOAP, UDDI Et les autres WS-* ? vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 32 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* Implémentation WS-* avec Java Serveur d'Applications Java EE Client Fournisseur Internet Application Web Service SOAP/HTTP Interface Java JAX-WS +JAXB vendredi 5 décembre 2014 WSDL Java JAX-WS +JAXB Idir AIT SADOUNE - <[email protected]> 33 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* Création d’un Web Service avec Java EE o Web Service = classe + annotations import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService(serviceName="HelloService") public class HelloService { @WebMethod(operationName="sayHello") public String sayHello(@WebParam(name="n") String n) { return "Hello dear "+n+" !"; } } vendredi 5 décembre 2014 Correspondance annotation ⬌ WSDL = JAX-WS Idir AIT SADOUNE - <[email protected]> 34 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* JAX-WS (Java API for XML Web Services) o Objectif = conversion WSDL ⬌ Java et SOAP ⬌ Java 1. Correspondance automatique Classe (ou interface) Java ➜ WSDL o Génération de contrat (côté fournisseur ou client) 2. Correspondance automatique WSDL ➜ Java o Génération d’un squelette de service à partir de son contrat o Génération d’un stub côté client 3. Transformation automatiquement appel de méthode Java ⬌ message SOAP o Côté fournisseur, le serveur d'application exécute les opérations JAX-WS o JAX-WS s'appuie sur JAX-B pour le traitement du XML vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 35 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* Objets passés en XML : JAXB o JAXB : Java Architecture for XML Binding o Objectif = conversion XM L⬌ Java o Données nécessaires : o Schéma XML Schema o ou classes Java annotées o Opérations supportées : o Compilation : XML Schéma ⬌ classe Java annotée o Exécution : objet Java ⬌représentation XML = marshalling/unmarshalling o Validation Source : The Java EE 5 Tutorial vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 36 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* Exemple avec JAXB @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Product{ <?xml version="1.0" encoding="UTF-8"?> <product> @XmlElement <name>GPS TomTom Go Live 825M</name> private String name; <price>216.0</price> @XmlElement private Double price; </product> public Product(){…} public String getName() { return name; } public void setName(String name) { this.name = name; } … } vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 37 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Exposer une application Java sous la forme d’un Web Service WS-* Code first vs Contract first o Principe = o Principe = 1. Implémenter la logique métier 2. Générer automatiquement le contrat WSDL pour le publier 1. Ecrire le contrat WSDL 2. Implémenter la logique métier o Possibilité de générer le squelette de code de la logique métier à partir du contrat o Avantages o Avantages o Simple à réaliser o Utilité pour exposer du code legacy, ou pour faire des tests o Inconvénients o Meilleur découplage interface – implémentation, stabilité du WSDL o Meilleures performances généralement o Inconvénients o Plus complexe à réaliser o Variations dans le contrat généré o Dépendance entre le code et le contrat o Développement de l’application cliente après développement du service vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 38 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Appeler un Web Service WS-* en Java Implémentation WS-* avec Java Serveur d'Applications Java EE Client Fournisseur Internet Application Web Service SOAP/HTTP Interface Java JAX-WS +JAXB vendredi 5 décembre 2014 WSDL Java JAX-WS +JAXB Idir AIT SADOUNE - <[email protected]> 39 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Appeler un Web Service WS-* en Java Client d’un Web Service o Comme en RMI : ☛ stub/proxy = représentation du service dans l’espace du client, composant local qui délèguera les appels au composant distant o Types de proxy : JAX-WS o Stub statique : classes générées à partir du WSDL o Proxy dynamique : classes générées à l'exécution à partir du WSDL o Dynamic Invocation Interface (DII) : découverte dynamique du service à l'exécution o Configuration : login / mot de passe, clé… vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 40 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Appeler un Web Service WS-* en Java Création d’un client avec Java o Créer/récupérer une interface Java représentant le service @WebService public interface HelloService { @WebMethod public String sayHello(@WebParam(name = "n") String n); } Il est possible de générer automatiqueme nt un client : voir les exercices… o A l'aide de JAX-WS, se connecter au service et appeler ses opérations : // Creation du stub URL wsdlURL = new URL("http://localhost:8080/HelloWebService/HelloService?WSDL"); QName serviceName = new QName("http://hello/", "HelloService"); Service serviceClient = Service.create(wsdlURL, serviceName); QName portName = new QName("http://hello/", "HelloServicePort"); HelloService portStub = serviceClient.getPort(portName, HelloService.class); System.out.println("portStub : "+portStub); // Envoi d'une requête System.out.println("réponse = " + portStub.sayHello("tutu tata")); vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 41 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Appeler un Web Service WS-* en Java Implémentation WS-* avec Java Serveur d'Applications Java EE Client Fournisseur Internet Application Web Service SOAP/HTTP Interface Java JAX-WS +JAXB vendredi 5 décembre 2014 WSDL Java JAX-WS +JAXB Idir AIT SADOUNE - <[email protected]> 42 Mineure Architectures Orientées Services SOA – Web Services Les Web Services WS-* Appeler un Web Service WS-* en Java Problématique de l’interopérabilité o Problème = variations dans les implémentations des standards o WS-I (Web Service Interoperability) o Consortium d’éditeurs de logiciels o Objectif = assurer l’interopérabilité entre les implémentations des normes liées aux Web Services o Produit STAN D ARD S SPECI FI CATI ON S BESOI N S GUI D E D ’I M PLEM EN TATI ON BESOI N S o Des profils = ensembles de standards à implémenter + guides o Des exemples d’applications o Des outils de test EN TREPRI SES, D EVELOPPEURS, UTI LI SATEURS FI N AUX o WSIT (Web Services Interoperability Technologies) o Implémentation Java open source de certaines spécifications WS-* sélectionnées par WS-I et interopérables avec le WCF de .NET vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 43 Mineure Architectures Orientées Services SOA – Web Services Plan ① Qu'est-ce qu'un Web Service ? 1. 2. 3. 4. Définition et principe Rappels sur le protocole HTTP Rappels sur le langage XML Implémentation des Web Services ② Les Web Services WS-* 1. 2. 3. 4. Standards et acteurs Principales technologies : WSDL, SOAP, UDDI Exposer une application Java sous la forme d'un Web Service WS-* Appeler un Web Service WS-* en Java ③ Les Web Services RESTful 1. 2. 3. vendredi 5 décembre 2014 Principes Appeler un Web Service RESTful en Java Exposer une application Java sous la forme d'un Web Service RESTful Idir AIT SADOUNE - <[email protected]> 44 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Principes REST (Representational State Transfert) o REST = style d’architecture orienté ressources semblable à celui du web o Ressource = information qui peut être identifiée de manière unique et référencée par un lien o Identifiant unique ➡ pour le web : URI o Plusieurs rendus possibles ➡ pour le web : HTML, XML… o Opérations CRUD sur les ressources = Create, Read, Update, Delete ➡ pour le web, opérations HTTP o Objectif de l'architecture REST pour les Web Services : simplifier l’utilisation par rapport aux WS-* o o o o Moins de standards à maîtriser et implémenter Messages moins verbeux Utilisation moins couteuse … vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 45 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Principes RESTful Web Services o Web Service = ressource avec une URI logique comme identifiant o URI obtenue par hiérarchie : http://supermarche.fr/produitsfrais/fruits/raisin o URI obtenue par construction : http://geographie.fr/altitude?lat=36&lon=10 o Opérations CRUD = opérations HTTP (requêtes/réponses) o o o o PUT = Create = création de la ressource GET = Read = lecture de la valeur de la ressource POST = Update = modification de la valeur de la ressource DELETE = Delete = destruction de la ressource o Contraintes de conception : o Opérations idempotentes o Pas de session client-serveur (mais le client ou le serveur peut être stateful) vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 46 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Principes RESTful Web Services : Exemple de requête o Requête HTTP GET http://open.mapquestapi.com/nominatim/v1/reverse? format=xml&lat=48.7099500104522&lon=2.16758762635404 o Equivalent SOAP <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <serv:reverse xmlns:serv="http://open.mapquestapi.com/nominatim/v1/"> <format>xml</format> <lat>48.7099500104522</lat> <lon>2.16758762635404</lon> </serv:reverse > </soap:Body> </soap:Envelope> o Les URLs peuvent être générées par des formulaires HTML ! vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 47 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Principes RESTful Web Services : Exemple de réponse o Réponse HTTP standard o Chaine de caractères représentant le résultat de l’opération o Ou document XML représentant la ressource <?xml version="1.0" encoding="UTF-8" ?> … <addressparts> <bus_stop>Le Moulon</bus_stop> <road>Rue Joliot-Curie</road> <suburb>Montjay</suburb> <city>Gif-sur-Yvette</city> <administrative>Palaiseau</administrative> <county>Essonne</county> <state>Île-de-France</state> <postcode>91400</postcode> <country>France métropolitaine</country> <country_code>fr</country_code> </addressparts> </reversegeocode> vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 48 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Appeler un Web Service RESTful Client d’un service REST vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 49 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Appeler un Web Service RESTful Client d’un service REST :Exemple avec Java // Préparation de la connexion Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.supelec.fr", 8080)); URL url = new URL("http://localhost:8080/HelloREST/resources/helloREST"); HttpURLConnection connexion = (HttpURLConnection) url.openConnection(proxy); // Envoi de la requête connexion.setRequestMethod("GET"); connexion.connect(); // send GET request // Récupération du contenu de la réponse System.out.println("Réponse :"); InputStream stream = connexion.getInputStream(); BufferedReader r = new BufferedReader(new InputStreamReader(stream)); String line; while((line = r.readLine()) != null){ System.out.println(line); } // Déconnexion connexion.disconnect(); vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 50 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Exposer une application Java sous la forme d’un Web Service RESTful Service REST : Exemple avec Java @Path("/helloREST") public class HelloResource { private String name; public HelloResource(){ this.name="Robert"; } Chemin d'accès de la ressource Mapping des opérations HTTP sur des méthodes de la classe + type MIME du contenu produit/consommé (important) @GET @Produces("text/plain") public String getHello() { return "Hello "+this.getName()+" !"; } public String getName() { return name; } public void setName(String name) { this.name = name; } } vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 51 Mineure Architectures Orientées Services SOA – Web Services Les Web Services RESTful Exposer une application Java sous la forme d’un Web Service RESTful Service REST : Autres méthodes HTTP @Path("/helloREST") @Singleton public class HelloResource { private String name; Composant EJB ayant une instance unique, dont le rôle est de "mémoriser" la chaîne de caractère "name" public HelloResource(){ this.name="Robert"; } @GET @Produces("text/plain") public String getHello() { return "Hello "+this.getName()+" !"; } Opération POST pour modifier la ressource @POST + consomme et produit du texte @Consumes("text/plain") @Produces("text/plain") public String putHello(String content) { this.setName(content); return "New name = "+this.getName(); } } vendredi 5 décembre 2014 Idir AIT SADOUNE - <[email protected]> 52