Services web Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours IED Plan



Documents pareils
Introduction aux «Services Web»

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

4. SERVICES WEB REST 46

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

SOAP Concepts Application à Glassfish

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS

Programmation Web Avancée Introduction aux services Web

Architecture Orientée Service, JSON et API REST

Méthodes et Langages du Commerce Electronique

Applications et Services WEB: Architecture REST

Les Architectures Orientées Services (SOA)

Services Web publication et découverte

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Sécurité des Web Services (SOAP vs REST)

Messagerie asynchrone et Services Web

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Architectures d'intégration de données

Manuel d intégration API SOAP SMS ALLMYSMS.COM

Architectures Web Services RESTful

Web Tier : déploiement de servlets

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Compte Rendu d intégration d application

Mise en œuvre des serveurs d application

Introduction aux. services web 2 / 2

Application Web et J2EE

API Web Service TéléAlerte

EXA1415 : Annotations

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Urbanisme du Système d Information et EAI

Auto-évaluation Aperçu de l architecture Java EE

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Web Services : Beyond the peer-to-peer architecture

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Module BD et sites WEB

Volet Synchrone pour Client Lourd

Petite définition : Présentation :

Programmation Internet Cours 4

Environnements de Développement

BPEL Orchestration de Web Services

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

On Feature Interaction among Web Services Michael Weiss et Babak Esfandiari

BIRT (Business Intelligence and Reporting Tools)

Bien architecturer une application REST

JOnAS Day 5.1. Outils de développements

CQP Développeur Nouvelles Technologies (DNT)

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Application web de gestion de comptes en banques

Nouvelles technologies pour l intégration : les ESB

Plateforme PAYZEN. Définition de Web-services

Formation en Logiciels Libres. Fiche d inscription

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Java pour le Web. Cours Java - F. Michel

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

1. Installation d'un serveur d'application JBoss:

Refonte front-office / back-office - Architecture & Conception -

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Programmation Web. Madalina Croitoru IUT Montpellier

Sommaire. Introduction La technologie ebxml EDI conventionnels versus ebxml Web Services et ebxml Acteurs de l ebxml Conclusion

Le cadre des Web Services Partie 1 : Introduction

La démarche SOA et l interopérabilité applicative

Tessi Documents Services ASPONE. Démo Webservices UpValue.

Les Services Web. Jean-Pierre BORG EFORT

Classification : public 1/59

Catalogue des formations Edition 2015

République Algérienne Démocratique et Populaire Université Abou Bakr Belkaid Tlemcen Faculté des Sciences Département d Informatique

Approche Contract First

Bases Java - Eclipse / Netbeans

Les services usuels de l Internet

Point sur les solutions de développement d apps pour les périphériques mobiles

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Business Process Execution Language

Technologies pour Web Services faciles : REST, JSON

TP1 : Initiation à Java et Eclipse

Création d une application JEE

les techniques d'extraction, les formulaires et intégration dans un site WEB

Architectures web/bases de données

JOnAS Day 5.1. Clustering

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Systèmes d'informations historique et mutations

Responsable du cours : Héla Hachicha. Année Universitaire :

Introduction à la plateforme J2EE

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

18 TCP Les protocoles de domaines d applications

Transcription:

Services web Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours IED Plan Principes SOAP WSDL UDDI Services REST Services SOAP en Java Cours IED (UCP/M1): Services web Page 2

Services web Infrastructure pour le développement d applications distribuées sur le web Le web environnement distribué spécifique: Contrôle limité des sites, débit faible Utilisation des protocoles web (ex: HTTP) avec leurs limitations Fonctionnalités, présentation moins riches (HTML) Clients légers Objectif: réaliser des applications distribuées avec les contraintes imposées par le web Cours IED (UCP/M1): Services web Page 3 Scénario d utilisation 1. Définition du service (fournisseur) Description WSDL des entrées/sorties, des caractéristiques du service 2. Publication du service (fournisseur) Publication de la description WSDL dans un annuaire (UDDI) 3. Recherche de service (client) Recherche d un service dans un annuaire adresse du service choisi 4. Enregistrement au service web (client) Enregistrement auprès du fournisseur pour accéder au service trouvé 5. Appel du service (client) Exécution du service avec les paramètres fournis par le client 6. Composition (client, fournisseur) Utilisation du résultat pour l appel à d autres services (client) Appel d un autre service lors de l exécution du service appelé (fournisseur) Cours IED (UCP/M1): Services web Page 4

Scénario (suite) Cours IED (UCP/M1): Services web Page 5 Schéma d interaction Source: G. Alonso Schéma proposé par IBM Bas niveau, construction ascendante D autres architectures (ex. ebxml): haut niveau, construction descendante Cours IED (UCP/M1): Services web Page 6

Comparaison avec les solutions middleware Les mêmes notions existent dans CORBA, EJB, RMI Source: R. Voyer Cours IED (UCP/M1): Services web Page 7 Technologies pour services web Technologies de base SOAP : «Simple Object Access Protocol» RPC par appel de service web Protocole de communication à l appel de services web WSDL : «Web Service Description Language» Langage de description de services web Paramètres, type du résultat, opérations fournies par le service, points d accès UDDI : «Universal Description, Discovery and Integration» Protocole de description et d interaction avec des annuaires de services web Autres aspects: énormément de standards Orchestration, composition: WSBPEL, WS-Coordination, WS-CDL Sémantique: OWL-S, WSDL-S Sécurité: WS-Security Cours IED (UCP/M1): Services web Page 8

SOAP Simple Object Access Protocol, norme W3C SOAP 1.0: 1999, basé sur HTTP SOAP 1.1: 2000, plus générique, autres protocoles SOAP 1.2: recommandation W3C, 2007 Couvre 4 aspects Format XML des messages échangés Comment un message SOAP est transporté sur le web par HTTP, SMTP. Règles de traitement des messages SOAP Conventions de transformation d un appel RPC en SOAP et d implémentation d une communication RPC Cours IED (UCP/M1): Services web Page 9 SOAP: objectifs But initial : infrastructure minimale pour faire du RPC sur le web Utilisation de XML pour les échanges Structure de messages très simple Basé sur HTTP pour résoudre le problème des pare-feu Raisons pratiques Éviter les problèmes de CORBA sur le web, qui doit en pratique s appuyer de toute façon sur HTTP à cause des pare-feu Disposer d une couche facile à mettre en œuvre au-dessus des plateformes middleware pour une intégration à travers le web Transformer SOAP par la suite en support générique d échange de messages sur le web, au-delà de RPC et de HTTP Cours IED (UCP/M1): Services web Page 10

Structure des messages SOAP Messages : «enveloppes» où l application met les données à transmettre Éléments XML avec des sous-éléments SOAP Envelope SOAP header Structure En-tête (optionnelle) Niveau infrastructure Corps (obligatoire) Niveau application Header Block SOAP Body Body Block Cours IED (UCP/M1): Services web Page 11 Exemple <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <t:transaction xmlns:t="some-uri" SOAP-ENV:mustUnderstand= true"> 5 </t:transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>def</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Cours IED (UCP/M1): Services web Page 12

En-tête SOAP Conteneur pour information indépendante de l application Information de sécurité, de coordination, identificateurs de transaction, Ensemble de blocs (éléments XML) Chaque nœud sur le parcours source - destination peut traiter des blocs Qui traite les blocs d en-tête? Attribut «role»: qui a le droit de traiter le bloc Rôles standard SOAP: http://www.w3.org/2003/05/soap-envelope/role/... "none" : personne "next" : tout nœud intermédiaire ou le destinataire final "ultimatereceiver" : seul le destinataire final (par défaut) Rôles spécifiques à l'application: chaque nœud connaît ses rôles applicatifs Attribut «mustunderstand»: obligation ou non de traiter l élément "true" : traitement obligatoire, si pas possible générer erreur "false" : traitement optionnel (par défaut) Attribut «relay» (SOAP 1.2): un bloc non traité doit être transmis au prochain nœud Cours IED (UCP/M1): Services web Page 13 Cheminement des messages SOAP Un message source destination : chemin dans le réseau Objectif: tenir compte de l architecture du réseau (ex. middleware) Attribut «role» dans chaque bloc d en-tête (par défaut: "ultimatereceiver") Chaque nœud dans le chemin regarde chaque bloc d en-tête Il traite (éventuellement) les blocs d en-tête qui lui reviennent Traitement obligatoire des parts avec «mustunderstand» = "true" Enlève éventuellement ces blocs de l en-tête sauf pour les blocs non traités où l attribut «relay» est présent Retransmet le message avec l en-tête mise-à-jour vers le nœud suivant Si erreur, arrêt du cheminement et retour d un message SOAP d erreur Les modifications en chemin: seulement pour l en-tête Le corps du message est traité seulement par le destinataire Remarque: il existe aussi une notion d «intermédiaire actif», qui peut modifier le message reçu d une façon dépendante de l application Cours IED (UCP/M1): Services web Page 14

Corps SOAP Conteneur pour données spécifiques à l application Divisé en blocs Un bloc : traité seulement par le récepteur final Certains blocs ont une signification prédéfinie Pour traduire un appel RPC en SOAP Pour signaler des erreurs Bloc d erreur («Fault») : rapport d erreur dans la traitement du message Code: catégorie d erreur (version, mustunderstand, client, server) Texte: explication textuelle, à afficher Acteur: nœud à l origine de l erreur Détail: information dépendante de l application D autres éléments rajoutés dans SOAP 1.2 Cours IED (UCP/M1): Services web Page 15 Appel RPC en SOAP RPC: deux messages SOAP (appel + réponse) Message d appel: Élément : nom de fonction à appeler Sous-éléments: paramètres d appel de la fonction Message de retour: deux possibilités Résultat de l appel OU Élément «Fault» pour signaler une erreur de traitement Généralement réalisé par HTTP (mais pas nécessairement) Appel: GET/POST Retour: réponse HTTP Cours IED (UCP/M1): Services web Page 16

Exemple Message d appel <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <add soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"> <op1 xsi:type="xsd:int">2</op1> <op2 xsi:type="xsd:int">5</op2> </add> </soapenv:body> </soapenv:envelope> Message réponse <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <addresponse soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"> <addreturn xsi:type="xsd:int">7</addreturn> </addresponse> </soapenv:body> </soapenv:envelope> Cours IED (UCP/M1): Services web Page 17 SOAP et HTTP «Binding» SOAP Description de la façon dont les messages SOAP sont envoyés en utilisant un protocole de transport donné «Binding» typique pour SOAP : HTTP SOAP dans HTTP: utilise GET ou POST GET: l appel n est pas un message SOAP, seule la réponse l est POST (préféré): l appel et la réponse sont des messages SOAP Inclusion dans les messages HTTP Appel POST: enveloppe SOAP = contenu du message POST Réponse: enveloppe SOAP = contenu de la réponse SOAP utilise les mêmes codes d erreur et d état que HTTP une réponse HTTP peut être directement interprétée par un module SOAP Cours IED (UCP/M1): Services web Page 18

WSDL Web Services Description Language Description des différentes parties d un service web Description à deux niveaux Abstrait Les types (XML Schema) des paramètres et des résultats des messages Les messages manipulés dans le service Les opérations individuelles: suite d échange de messages Une interface de service abstrait, qui groupe les opérations individuelles Concret Le «binding» de l interface (des opérations) à un protocole de transport Les points d accès (adresses réseau) pour chaque opération Service = ensemble de «bindings» avec leurs points d accès Cours IED (UCP/M1): Services web Page 19 Éléments WSDL Document WSDL Types (informations de type pour le document, ex. XML Schema) Message 1 Message 2 Message 3 Message 4 Opération 1 Opération 2 Opération 3 Interface (service abstrait) Message 5 Message 6 Description abstraite du service Source: G. Alonso binding 1 endpoint 1 binding 2 endpoint 2 binding 3 endpoint 3 Service (l interface dans toutes ses implémentations disponibles) binding 4 endpoint 4 Description concrète du service Cours IED (UCP/M1): Services web Page 20

Version courante: WSDL 2.0 WSDL 2.0 (2007) Points d accès ( endpoints ) Interfaces Héritage d interfaces Redéfinition d opérations enlevée Messages définis par des types Opérations définies dans les interfaces Points d accès définis dans les Bindings 8 motifs d échange de messages (3 principaux, 5 additionnels) Quelques nouveaux éléments WSDL 1.1 (2001) Ports PortTypes Redéfinition d opérations Messages composés de parts 6 éléments de premier niveau: Messages, Opérations, «PortTypes», «Bindings», Ports et Services 4 primitives de transmission : «One-way», «Request- Response», «Solicit-Response», «Notification» Cours IED (UCP/M1): Services web Page 21 Exemple : service de réservation <description xmlns="http://www.w3.org/2006/01/wsdl" targetnamespace= "http://greath.example.com/2004/wsdl/ressvc" xmlns:tns= "http://greath.example.com/2004/wsdl/ressvc" xmlns:ghns = "http://greath.example.com/2004/schemas/ressvc" xmlns:wsoap= "http://www.w3.org/2006/01/wsdl/soap" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <documentation> This document describes </documentation> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://greath.example.com/2004/schemas/ressvc" xmlns="http://greath.example.com/2004/schemas/ressvc"> <xs:element name="checkavailability" type="tcheckavailability"/> <xs:complextype name="tcheckavailability"> <xs:sequence> <xs:element name="checkindate" type="xs:date"/> <xs:element name="checkoutdate" type="xs:date"/> <xs:element name="roomtype" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:element name="checkavailabilityresponse" type="xs:double"/> <xs:element name="invaliddataerror" type="xs:string"/> </xs:schema> </types> Cours IED (UCP/M1): Services web Page 22

Exemple (suite) <interface name = "reservationinterface" > <fault name = "invaliddatafault" element = "ghns:invaliddataerror"/> <operation name="opcheckavailability" pattern="http://www.w3.org/2006/01/wsdl/in-out" style="http://www.w3.org/2006/01/wsdl/style/iri"> <input messagelabel="in" element="ghns:checkavailability" /> <output messagelabel="out" element="ghns:checkavailabilityresponse" /> <outfault ref="tns:invaliddatafault" messagelabel="out"/> </operation> </interface> Interface : définition abstraite du service Composée d opérations et d erreurs Peut hériter d autres interfaces Opérations Ensemble de messages et d erreurs Enchaînement des messages défini par un motif («pattern») Style d opération: contraintes sur l opération et les messages RPC, IRI (internationalized resource identifier), etc. Cours IED (UCP/M1): Services web Page 23 Motifs d échange de messages Motifs de base IN-ONLY : un seul message d entrée, sans erreurs ROBUST IN-ONLY : pareil, mais avec erreur possible IN-OUT Message d entrée reçu en provenance d un noeud N Message de sortie envoyé au noeud N Erreurs, qui si elles apparaissent, remplacent le message de sortie Motifs supplémentaires (en dehors de la norme) IN-OPTIONAL-OUT : pareil, mais le message de sortie est optionnel OUT-ONLY : un seul message de sortie, sans erreurs ROBUST OUT-ONLY : pareil, mais avec erreur possible OUT-IN Message de sortie envoyé au noeud N Message d entrée reçu en provenance d un noeud N Erreurs, qui si elles apparaissent, remplacent le message d entrée OUT-OPTIONAL-IN : l opposé de IN-OPTIONAL-OUT Cours IED (UCP/M1): Services web Page 24

Exemple (fin) <binding name="reservationsoapbinding" interface="tns:reservationinterface" type="http://www.w3.org/2006/01/wsdl/soap" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/http"> <fault ref="tns:invaliddatafault" wsoap:code="soap:sender"/> <operation ref="tns:opcheckavailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/> </binding> <service name="reservationservice" interface="tns:reservationinterface"> <endpoint name="reservationendpoint" binding="tns:reservationsoapbinding" address ="http://greath.example.com/2004/reservation"/> </service> </description> «Binding»: format des messages et détails de protocole par opération Une même opération peut avoir plusieurs bindings Service: ensemble de points d accès = couples (binding, adresse réseau) Cours IED (UCP/M1): Services web Page 25 UDDI Universal Description, Discovery and Integration Historique À l origine: annuaire universel pour les services web (à la Google) Aujourd hui: vise plutôt les environnements privés, à petite échelle Raisons: peu d annuaires généraux UDDI (IBM, Microsoft, ), contenu pauvre et non fiable Versions Meilleure fiabilité en environnements contraints, privés (~EAI) Élément d infrastructure qui aide aussi à stocker des infos absentes en WSDL Version 1: les bases d un annuaire de services Version 2: adaptation à SOAP et WSDL Version 3: redéfinition du rôle UDDI, accent sur les implémentations privées, sur l interaction entre annuaires privés et publics Cours IED (UCP/M1): Services web Page 26

Modèle de données UDDI Entrée d annuaire UDDI = document XML composé d éléments businessentity: organisation qui offre le service businessservice: liste des services web offerts par l organisation bindingtemplate : aspects techniques du service offert tmodel: élément générique pour info supplémentaire sur le service Types d information Pages blanches: données sur le fournisseur du service (nom, adresse, ) Pages jaunes: classification du type de service, basée sur des standards Pages vertes: info technique sur l utilisation du service Pointeurs sur les descriptions WSDL, qui ne font pas partie de l annuaire Cours IED (UCP/M1): Services web Page 27 Schéma du modèle de données UDDI BusinessEntity businesskey, name, contact, description, identifiers, categories BusinessService servicekey, businesskey, name description, categories WSDL Document External Web Service Interface Description (located at the service provider) BindingTemplate bindingkey, servicekey, description, categories, access point tmodel name, description, overview document, url pointer to WSDL Source: G. Alonso Cours IED (UCP/M1): Services web Page 28

UDDI, WSDL et SOAP Source: G. Alonso Cours IED (UCP/M1): Services web Page 29 Interaction avec UDDI APIs pour l accès à UDDI UDDI Inquiry: rechercher des entrées UDDI dans l annuaire (mots clés) UDDI Publication: publier et modifier des entrées UDDI dans l annuaire UDDI Security: contrôle d accès à l annuaire UDDI Subscription: souscription à des modifications d entrées UDDI UDDI Replication: dupliquer des entrées sur plusieurs nœuds UDDI Custody and Ownership transfer: modifier le propriétaire d une entrée UDDI UDDI Subscription Listener: pour le client qui souscrit aux modifications UDDI Value Set: pour valider l information à publier dans l annuaire Cours IED (UCP/M1): Services web Page 30

Services REST REST = Representational State Transfer Pas un standard (comme SOAP), mais un style d architecture applicative Architecture orientée données (ressources) SOAP : architecture orientée services Idées Directement sur HTTP (pas de surcouche comme SOAP) Interface uniforme = méthodes HTTP Manipulation de données/ressources identifiées par de URI Services sans état : tous les informations nécessaires se trouvent dans les paramètres d appel Orienté données: actions de base sur les données/ressources (consultation, création, mise à jour, suppression) SOAP: orienté service abstrait, fonctionnalités potentiellement complexes Cours IED (UCP/M1): Services web Page 31 REST vs. SOAP SOAP (Simple Object Access Protocol) Principal standard W3C pour les services web Associé à WSDL pour la description du service Protocole de communication échange de messages XML Services appelables à travers des points d accès sur le web REST (Representational State Transfer) Appel de services web directement en HTTP Messages HTTP : POST, GET, PUT, DELETE Utilisation codes d erreur, options d appel HTTP, caching Description WADL (peu utilisée) Tout objet (ressource) manipulé par le service a une URI Services sans état: exécution indépendante des appels précédents Cours IED (UCP/M1): Services web Page 32

Caractéristiques REST Quatre actions primitives de base POST pour des créations d objets (ressources) GET pour de la consultation d objets PUT pour des mises à jour d objets DELETE pour des suppressions d objets Tout objet créé / consulté / modifié / supprimé a une URI Objets directement adressables sur le web Un objet peut avoir plusieurs représentations XML, JSON, CSV, XHTML, Chaque représentation a sa propre URL, donc directement consultable Cours IED (UCP/M1): Services web Page 33 REST CRUD En pratique: principes pas toujours respectés Ceux qui les respectent services REST CRUD (création, recherche, update, delete) En pratique on peut: Programmer des opérations autres que CRUD Associer des opérations CRUD à d autres méthodes HTTP Ne pas exposer les objets à travers des URL Ce qui reste: On associe des opérations à des méthodes HTTP et à des URL / requêtes Le type de retour peut être paramétré selon différents critères Ca reste une communication HTTP Cours IED (UCP/M1): Services web Page 34

Résumé SOAP Plus évolué Indépendant du protocole qui achemine les messages Standards associés pour la sécurité, la fiabilité, les transactions, etc. Permet aux applications d exposer un minimum de leur fonctionnement Peut garder un état au niveau du service suite aux appels REST Simple Basé directement sur HTTP, plus performant que SOAP Accès uniforme aux ressources / objets Limité à seulement quatre opérations Expose les objets manipulés à un adressage direct sur le web Plusieurs représentations des objets disponibles Aujourd hui: 85% des services disponibles sont REST Cours IED (UCP/M1): Services web Page 35 Services SOAP en Java avec JAX-WS Java API for XML Web Services Standard et implémentation (Metro = implémentation de référence) WSIT (Web Services Interoperability Technologies): complément pour gérer les services web avancés Intégrée à la JRE / JDK depuis la version 6 Idée générale d utilisation Créer des services web à partir de classes Java + annotations @WebService (création bottom-up de services web) Créer des services web à partir d une description WSDL (top-down) Outils d assemblage et déploiement des services web Création de client Java de services web JAX-WS à partir du WSDL Cours IED (UCP/M1): Services web Page 36

Architecture Client Java Serveur d applications WDSL Topdown Client PHP SOAP Servlet JAX-WS Client JavaScript Classes Java annotées Bottomup Cours IED (UCP/M1): Services web Page 37 Approche bottom-up Création d une classe Java simple (POJO) annotée POJO = Plain Old Java Object Annotations pour services web (@WebService, @WebMethod, ) package test.jaxws; import javax.jws.webservice; @WebService public class Exemple{ public int somme(int a, int b){return a+b;} public int produit(int a, int b){return a*b;} } Méthodes publiques de la classe opérations du service Génération du service Avec la commande wsgen + création manuelle application web Avec Eclipse Java EE dans un projet Web dynamique Cours IED (UCP/M1): Services web Page 38

Création de service avec Eclipse Java EE Création d un nouveau «Dynamic Web Project» Choisir un des serveurs d application proposés (Tomcat 6.0, Glassfish 3.1) Cocher la génération du descripteur de déploiement «web.xml» Créer un package dans le projet et une classe annotée dans le package Compléter avec d autres classes nécessaires à la classe annotée Générer l application web qui implémente le service Click droit sur la classe annotée WebServicesCreate Web Service Choisir le niveau «Assemble service» pour le serveur L application est générée dans le dossier WebContent du projet Déployer le service Générer un fichier WAR à partir de l application Click droit sur le projet Eclipse Export WAR File Déployer le WAR sur un serveur d applications Accès au service : http://serveurappli/nomprojet/nomclasseservice?wsdl Cours IED (UCP/M1): Services web Page 39 Déploiement sur un serveur Glassfish Lancement serveur d application Dans le répertoire glassfish de l installation Glassfish: bin/asadmin start-domain Pour arrêter le serveur: bin/asadmin stop-domain Déploiement application service web Copie du fichier WAR dans le répertoire domains/domain1/autodeploy de glassfish Pour enlever l application service web: supprimer le fichier WAR du répertoire autodeploy Accès applications sur le serveur Le serveur tourne sur le port 8080 de la machine Console d administration sur le port 4848 Cours IED (UCP/M1): Services web Page 40

Annotations Web Services Spécification et paramétrage des parties d un service web @WebService service web String name, endpointinterface, portname, targetnamespace, Ex. @WebService(name="MonService", targetnamespace="http://exemple.org/") @WebMethod opération du service web @WebParam paramètre opération @WebResult résultat opération @WebFault message d erreur @WebService est la seule obligatoire Sa présence indique un service web Valeurs par défaut pour tous les paramètres des annotations Cours IED (UCP/M1): Services web Page 41 Approche top-down A partir d un fichier de description de service WSDL Outil wsimport Éventuellement utilisé indirectement à travers l environnement de développement (Eclipse, NetBeans, ) Ex. wsimport -keep -d rep-sortie-classes URIversWSDL Résultat Classes décrivant les messages échangés (avec JAXB) Interfaces du service web, décrivant le point d accès (PortType) Squelette de classe Java annotée à compléter pour définir l implémentation Assemblage et déploiement similaires à l approche bottom-up Cours IED (UCP/M1): Services web Page 42

Génération de clients avec JAX-WS Utilisation de la commande wsimport Génération classes Java pour le client Classe service donne accès au service web distant Interface d accès aux opérations du service Classes implémentant les messages échangés Ex. wsimport -keep -p packageclient URIversWSDL Utilisation des classes générés dans l application Java cliente Ex. Service web créé à partir de la classe Exemple (voir approche bottom-up), opérations somme et produit wsimport produit la classe service ExempleService, l interface Exemple ExempleService service = new ExempleService(); Exemple e = service.getexempleport(); int resultat = e.somme(2, 3); Cours IED (UCP/M1): Services web Page 43