SOAP Concepts Application à Glassfish



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

Introduction aux «Services Web»

4. SERVICES WEB REST 46

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

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

Le cadre des Web Services Partie 1 : Introduction

Architecture Orientée Service, JSON et API REST

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Classification : public 1/59

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

Programmation Web Avancée Introduction aux services Web

Remote Method Invocation (RMI)

Volet Synchrone pour Client Lourd

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

Méthodes et Langages du Commerce Electronique

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Compte Rendu d intégration d application

Introduction aux. services web 2 / 2

RMI le langage Java XII-1 JMF

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

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

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

Messagerie asynchrone et Services Web

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

Les Services Web. Jean-Pierre BORG EFORT

BPEL Orchestration de Web Services

Remote Method Invocation Les classes implémentant Serializable

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

Architectures Web Services RESTful

Intergiciel - concepts de base

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

La base de données XML exist. A. Belaïd

Module BD et sites WEB

Mise en œuvre des serveurs d application

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Alfstore workflow framework Spécification technique

Les architectures 3-tiers Partie I : les applications WEB

Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

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

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

IBM Lotus Notes/Domino v7, fonctionnalités et évolutions

Architecture SOA Un Système d'information agile au service des entreprises et administrations

JOnAS 5. Serveur d application d

Cloud et SOA La présence du Cloud révolutionne-t-elle l approche SOA?

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

Java DataBaseConnectivity

Création d une application JEE

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

Vulgarisation Java EE Java EE, c est quoi?

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

L3 informatique TP n o 2 : Les applications réseau

Urbanisme du Système d Information et EAI

Architecture et Extensions d ArcGIS Server

Remote Method Invocation en Java (RMI)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

2 Chapitre 1 Introduction

Utilisation de Jakarta Tomcat

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

NFP111 Systèmes et Applications Réparties

UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS

TP1 : Initiation à Java et Eclipse

Hébergement et configuration de services WCF. Version 1.0

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

Calcul Parallèle. Cours 5 - JAVA RMI

Systèmes d'informations historique et mutations

Java pour le Web. Cours Java - F. Michel

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Application web de gestion de comptes en banques

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Intégration de systèmes

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Java Licence Professionnelle CISII,

Composition semi-automatique de Services Web

Web Tier : déploiement de servlets

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Programmer en JAVA. par Tama

Bien architecturer une application REST

Initiation à JAVA et à la programmation objet.

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

Plan du cours. Historique du langage Nouveautés de Java 7

Business Process Execution Language

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

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

A. Architecture du serveur Tomcat 6

L intégration d applications unifiée par les Services Web et XML Réconcilier J2EE.NET EIS et mainframes

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

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

Approche Contract First

Java et les bases de données

Transcription:

SOAP Concepts Application à Glassfish LicencePro 2014 Olivier Perrin Université de Lorraine

Évolution From server-side app to smart clients and services 2 Browser-based HTML Rendering (progressive enhancement) Browser Client HTML HTTP View Generation Controllers Application Server Service Layer Channels Repositories RDBMS CRUD Server Re-distribution allowed with author s consent. 15

Évolution From server-side app to smart clients and services 3 HTML5 & JS Engine DOM Controllers Client-side model Browser app or embedded in native web stg Client JSON events & notifications HTTP & WebSockets Service Layer Channels Repositories RDBMS CRUD Server Re-distribution allowed with author s consent. 16

Évolution From server-side app to smart clients and services 4 HTML5 & JS Engine DOM Controllers Client-side model Browser app or embedded in native web stg Client JSON events & notifications HTTP & WebSockets Service Service Service Service Layer business / domain services Channels Repositories RDBMS CRUD Server Re-distribution allowed with author s consent. 17

Évolution From server-side app to smart clients and services 5 HTML5 & JS Engine DOM Controllers Client-side model Browser app or embedded in native web stg Client JSON events & notifications HTTP & WebSockets Service Service Service business / domain services Channels Repositories RDBMS CRUD Server Re-distribution allowed with author s consent. 18

Évolution From server-side app to smart clients and services 6 HTML5 & JS Engine DOM Controllers Client-side model Browser app or embedded in native web stg Client JSON events & notifications HTTP & WebSockets Service Service Service Service Service Service SQL NoSQL other business / domain services platform services, web APIs PaaS Re-distribution allowed with author s consent. 19

Les services Web 7 Les services Web doivent permettre de construire une plateforme distribuée pour le Web Mais, ce n est pas nouveau! CORBA RMI.NET

Besoins 8 Objectifs interopérabilité adoption rapide, ubiquité liaison dynamique à l échelle d Internet (SOA) support d environnements ouverts (Web) et plus restreints (entreprise) Besoins standards infrastructure raisonnable intégration «simple» des applications orientation messages et documents vs API

Micro-services 9 Couplage faible Composables Chaque service fait une seule chose, mais la fait bien Suffisamment petit pour tenir dans une tête («If a class is bigger than my head then it is too big») Suffisamment petit pour être remplacé («Rewrite over Maintain», un service qui meurt doit le faire vite et fort) Multiples versions de services

Appel de procédure 10 Mécanisme des langages impératifs Défini par une interface qui spécifie: le type des résultats retournés le nom de l opération les paramètres de l opération ex: string traduire (string msg, integer langue) Niveau d abstraction pour cacher la communication au programmeur Langage de définition d interface commun et indépendant du langage de programmation

Services Web 11 Il sont décrits grâce à des fichiers WSDL (Web Service Definition Language) stockés dans un répertoire/annuaire UDDI (Universal Description, Discovery, and Integration) et ils communiquent grâce au protocole SOAP (plus d acronyme)

WS stack [Colan2002 - IBM] 12 WSBPEL, WSCI, BPML Procédés Fiabilité des messages Sécurité Transactions Coordination Qualité de service WSDL, UDDI, WS-Inspection Description SOAP XML, encodage Autres protocoles Messages HTTP, SMTP, Jabber, Transport

SOAP: historique 13 Simple Object Access Protocol 1.0 pas d objet plutôt Services-Oriented Architecture Protocol à partir de 1.2, plus d acronyme spécifique pour COM et HTTP SOAP 1.1 n importe quel transport binding (pas limité à HTTP) n importe quel langage (Java) n importe quel encodage de données (plug-in) indépendant des vendeurs SOAP 1.2

SOAP: introduction 14 C est un protocole pour échanger des informations structurées dans un environnement décentralisé/distribué Il utilise les technologies XML pour définir un cadre extensible d échange de messages Il est indépendant d un modèle particulier de programmation En gros, c est un protocole pour échanger des informations en envoyant des messages

SOAP: introduction (cont.) 15 L encodage des messages est en XML utilisation de XML Schema utilisation intensive des Namespaces Un objectif majeur: l interopérabilité & les firewalls SOAP est plus simple à implanter qu un équivalent en DCOM ou CORBA Deux utilisations possibles de SOAP RPC: appel de procédures distantes Message: échange de documents XML: EDI (messages)

SOAP: introduction (cont.) 16 Message: document style on envoie un message qui contient les données, et uniquement les données (pas de méthode) le serveur sait traiter les données et répond avec un message et ainsi de suite c est du transfert d informations RPC: RPC style on envoie les paramètres et les types de retour, et la méthode à invoquer SOAP est utilisé comme un système XML-RPC il traverse mieux les firewalls que RMI par exemple

SOAP: introduction (cont.) 17 Plusieurs bindings pour transporter un message HTTP: le plus courant SMTP Jabber traverse bien les firewalls sur le port 80 (contrairement à RMI par exemple) les messages peuvent être soit le texte du mail, soit un attachement

Concepts de base 18 Un message SOAP est un document XML qui contient les éléments suivants: Enveloppe SOAP Header SOAP Bloc Header Bloc Header Body SOAP Bloc Body - - - Bloc Body

Concepts de base (cont.) 19 un élément enveloppe (obligatoire) qui identifie le document XML comme étant un message SOAP qui définit le début et la fin du message un élément header (optionnel) qui contient des attributs du message point intermédiaire ou final un élément body (obligatoire) qui contient toutes les informations de l appel et de la réponse données XML un élément fault (optionnel) qui fournit les informations à propos des erreurs survenues lors du traitement du message

Concepts de base (cont.) 20 Tous les éléments sont déclarés dans l espace de nommage pou l enveloppe SOAP http://www.w3.org/2003/5/soap-envelope et les encodages et données dans http://www.w3.org/2003/5/soap-encoding

Exemple de message 21 Voyage Enveloppe SOAP Header SOAP Bloc Header: réservation Bloc Header: passager Body SOAP Bloc sous-élément: itinéraire Bloc sous-élément: hôtel

SOAP: Envelope 22 Le message en entier est contenu dans l élément Envelope L enveloppe ne contient qu un seul élément Body qui est obligatoire L élément Body peut contenir autant de nœuds enfants que nécessaire Le contenu de l élément Body forme le message Si une enveloppe contient un élément Header (un seul, optionnel), ce doit être le premier fils de l élément Envelope

SOAP: Envelope (cont.) 23 Les contenus du Header et du Body dépendent de l application encodingstyle permet d indiquer comment les données vont être sérialisées/désérialisées

SOAP: Header 24 Chaque élément du Header est appelé un bloc contient généralement des informations pour traiter le message les informations peuvent être destinées à des intermédiaires l attribut role next: le bloc doit être traité par l intermédiaire suivant none: pas de traitement du bloc ultimatereceiver: le bloc doit être traité par le dernier receveur du message chaque intermédiaire (application réceptrice) doit vérifier qu il peut jouer un rôle. Si c est le cas, il supprime le bloc, sinon, il le passe au suivant l attribut mustunderstand spécifie que l application doit comprendre ce que le bloc signifie (sinon, erreur)

SOAP: Header (cont.) 25 <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" env:encodingstyle="http://www.w3.org/2003/05/soap-encoding"> <env:header> <m:reservation xmlns:m="http://example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</reference> <m:dateandtime>2012-09-29t13:20:00.000-05:00</m:dateandtime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <n:name>john Q. Public</n:name> </n:passenger> </env:header>... </env:envelope>

SOAP: Body 26 Le Body est supposé être traité par le dernier service récepteur Hypothèse implicite: le récepteur comprend le message La spécification ne dit rien sur les éléments du Body d un message

SOAP: Body (cont.) 27 <env:body> <p:itinerary xmlns:p="http://example.org/reservation/travel"> <p:departure> <p:departing>new York</p:departing> <p:arriving>los Angeles</p:arriving> <p:departuredate>2012-09-14</p:departuredate> <p:departuretime>late afternoon</p:departuretime> <p:seatpreference>aisle</p:seatpreference> </p:departure> <p:return> <p:departing>los Angeles</p:departing> <p:arriving>new York</p:arriving> <p:departuredate>2012-09-20</p:departuredate> <p:departuretime>mid morning</p:departuretime> <p:seatpreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging> </env:body>

SOAP: Fault 28 Toutes les erreurs doivent apparaître dans un élément Fault unique dans le Body Il contient les sous-éléments suivants Code: le code permettant d identifier Reason: explication de l erreur Node: l élément à l origine de la faute Role: qui est à l origine de la faute Detail: information spécifique sur l erreur pour l application

SOAP: Fault (cont.) 29 Le schéma soap-envelope définit: VersionMismatch MustUnderstand DataEncodingUnknown Sender Receiver

SOAP: Fault (cont.) 30 <?xml version="1.0"?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"> <env:body> <env:fault> <env:code> <env:value>env:sender</env:value> <env:subcode> <env:value>rpc:badarguments</env:value> </env:subcode> </env:code> <env:reason> <env:text xml:lang="en-us">processing error</env:text> </env:reason> <env:detail> <e:myfaultdetails xmlns:e="http://travelcompany.example.org/faults"> <e:message>name does not match card number</e:message> <e:errorcode>999</e:errorcode> </e:myfaultdetails> </env:detail> </env:fault> </env:body> </env:envelope>

SOAP: sérialisation 31 La spécification SOAP fournit une méthode pour sérialiser les données Pour envoyer du XML, on l envoie tel quel Une valeur représente soit une donnée unique, soit une composition Un accesseur représente un élément qui donne accès à la valeur <nom>toto</nom> nom est l accesseur, Toto la valeur

SOAP: avec ou sans SOAP? 32 SOAP apporte la possibilité d orchestrer plusieurs services Web la possibilité d'accéder à un service Web possédant une API la possibilité d ajouter des méta-données dans le header cela permet de traiter le message d une certaine façon, ou de ne pas le traiter (rôle next ou ultimatereceiver) le fait de ne pas être restreint à des échanges de messages basés sur les documents ou RPC le fait de simplifier la sérialisation de documents XML complexes

SOAP: avec SOAP, message ou RPC? 33 SOAP n est pas limité à à des échanges basés sur des documents On peut utiliser un modèle de RPC avec appels basés sur XML Exemple: reservationservice.gere(paiementreservation) reservationservice.reserve(reservation res,!!!! CarteCredit cc)

SOAP: application à Glassfish

metro: architecture 35 Tooling - NetBeans IDE Security Reliability Transactions Metadata WSDL MEX Policy SOAP based messaging Message encoding (XML, FI) HTTP TCP SMTP

metro: JAX-WS 36 JAX-WS 2.2: API Web services simple à utiliser support de Web Services Addressing 1.0 POJO + annotations programmation facilitée Indépendance vis-à-vis de encodage, protocole, transport Intégration de JAXB (Java Architecture for XML Binding) API Java support100% de XML Schema Transmission de messages optimisée MTOM/XOP (W3C), FastInfoset (ITU-T/ISO)

metro: gestion des attachements BLOB en XML est coûteux Envoi d un BLOB comme un attachement SOAP Méthode par défaut JVM utilisation de byte[] besoin de mémoire (tas) Méthode plus appropriée: utilisation d un Data Handler plus besoin que l objet réside en mémoire le chargement peut être différé méthodes facilitant la gestion: InputStream getcontent() String getcontenttype() Object getinputstream() 011011101 011011 byte[] JVM Data handler Fichier temp byte[] 37 Fichier

SOAP: un exemple 38 Étapes Installation de Glassfish (4.0) Installation de Metro (2.2) Écrire un service Web Déploiement du service Écrire un client

Écrire un service Web 39 Simple! package licencepro; import javax.jws.webmethod; import javax.jws.webparam; import javax.jws.webservice; @WebService public class HelloWS { @WebMethod(operationName = "affichehello") public String affichehello(@webparam(name = "nom") String nom) { return "Hello " + nom; } }

Déploiement 40 Se fait grâce aux fichiers web.xml <?xml version="1.0" encoding="utf-8"?> <web-app version="2.5"...> <description>licencepro</description> <display-name>hello</display-name> <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.wsservletcontextlistener </listener-class> </listener> <servlet> <servlet-name>licencepro</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.wsservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>licencepro</servlet-name> <url-pattern>/helloservice</url-pattern> </servlet-mapping> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>

Déploiement (cont.) 41 sun-jaxws.xml <?xml version="1.0" encoding="utf-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'!! version='2.0'> <endpoint name='licencepro' implementation='licencepro.helloservice' url-pattern='/helloservice'/> </endpoints> Compilation et déploiement en utilisant le fichier build.xml fourni ant server

Le client 42 package licencepro.helloclient; public class HelloClient { public static void main(string[] args) { try {! HelloService port =!!!! new HelloServiceService().getHelloServicePort(); } } String resappelservice = port.affichehello(args[0]); System.out.println("Le resultat est: "+ resappelservice); } catch (Exception ex) { System.out.println ("Exception: " + ex); } Compilation ant client

Exécution 43 Dans /build/classes java licencepro.helloclient.helloclient Toto

SOAP Monitor 44 Pour voir ce qui se passe! le message SOAP de la requête le message SOAP de la réponse Comment? télécharger l archive sur le site du cours (wsmonitor.zip) dans le répertoire bin/, lancez wsmonitor.sh (ou wsmonitor.bat) modifier le code du client pour: passer par le port 4040 utiliser le monitor comme intermédiaire entre le client et le service forwarder la requête au endpoint

SOAP Monitor (cont.) 45 package licencepro.helloclient; import javax.xml.ws.bindingprovider; public class HelloClient { public static void main(string[] args) { try { HelloService port =!! new HelloServiceService().getHelloServicePort(); // Modification du port: 4040 au lieu de 8080 BindingProvider bp = (BindingProvider) port; String addresse =!!! (String)bp.getRequestContext().!!!! get(bindingprovider.endpoint_address_property); addresse = addresse.replacefirst("8080", "4040"); bp.getrequestcontext().put(!!! BindingProvider.ENDPOINT_ADDRESS_PROPERTY, addresse); } } String resappelservice = port.affichehello(args[0]); System.out.println("Le resultat est: "+ resappelservice); } catch (Exception ex) { System.out.println ("Exception: " + ex); }

SOAP Monitor (cont.) 46

Synthèse SOAP 47 Un message SOAP doit être encodé en XML Un message SOAP doit utiliser le namespace Envelope de la spécification Un message SOAP doit utiliser le namespace Encoding de la spécification Un message SOAP ne doit pas contenir de DTD Un message SOAP contient: un élément Envelope (obligatoire) un élément Header (optionnel) un élément Body (obligatoire) un élément Fault (optionnel)

Synthèse SOAP (cont.) 48 Problèmes SOAP est devenu plus un protocole de bas niveau pour implanter les files de messages plutôt qu un protocole d accès à un service pas de fiabilité pas de sécurité résolus avec WSIT/Tango! pas de transactions SOAP et les types de données complexes (images, documents, ) attachements (comme avec SMTP), mais MIME n est pas la panacée WS-Attachements pas toujours très simple! Une alternative: REST résolus avec metro!

SOAP: exercices 49 Hello Calculatrice Traduction Musixtore WS