Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

Les Web Services Schéma Directeur des Espaces numériques de Travail
Xavier Blanc Web Services Xavier Blanc
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Julien HERON.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Stéphanie CLAPIÉ Antoine RENARD
l'impact sur le eBusiness
Exposé de Système - Informatique et Réseau
Architecture de réseaux
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
Les Web Services.
TP 3-4 BD21.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Génie Documentiel Delacrétaz Jean-Marc
Les Web Services avec .Net
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Introduction aux services WEB
Les Enterprise Service Bus
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
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.
SERVLETS PRESENTATION
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Gestion des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Création d'un projet Web avec Netbeans
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
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
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
Initiation au web dynamique
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
‘‘Open Data base Connectivity‘‘
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
Module I-C3 : Applications Web IUT R&T 2e année
Cours Web Services ISIMA 3F3
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Les Chiffres Prêts?
Présentation Finale Spirit 07 / 03 / 2011 Groupe Vert 1 Equipe Verte.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Les sockets.
Campus-Booster ID : **XXXXX Copyright © SUPINFO. All rights reserved Le développement Web.
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
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.
Architecture Client/Serveur
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 «
Web Services.
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.
Transcription de la présentation:

Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0 Chapitre 5 - Développement de Web services XML Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0

Chapitre 5 - Développement de Web services XML Sommaire Revue des standards des Web services Le protocole SOAP Le langage WSDL Le service d’annuaires UDDI Développement classique avec Apache Axis Développement avec JAX-WS 2.0

Définition de l’architecture SOA « Il s’agit d’un modèle pour organiser et architecturer les services offerts par un organisme » (Définition de l’OASIS) Service- oriented architectures Web client Client/ server On-line midrange Batch 1970s 1980s 1990s 2000s 2010s

SOA : Intégration on interopérabilité ? Solution à fort couplage Architecture orientée Services Vous L’autre Programming Language Programming Language Database Database Agreements Object Model Object Model Schema Operating System Operating System Application Server Application Server

L'architecture orientée service « Service-oriented architectures are an approach to designing distributed computing systems that considers software resources as services available on a network. » Les 4 principes fondamentaux de SOA [Définition de microsoft « Don Box »] : Frontière explicite Services Autonomes Les services partagent les schémas, les contrats mais pas les classes La compatibilité des services est négociée sur la base de stratégies

Chapitre 5 - Développement de Web services XML Message2 Message1 Service Logic State So what is a “service”? For the sake of this discussion, a service is a unit of application logic Click to expose service interfaces What is different about services is that they expose network interfaces (So when you see these little nubs in my diagrams they represent service interfaces) Click to expose contracts These interfaces are governed by contracts Click That specify what messages the service will accept And what messages the service will produce Some services are stateless; for example a service that calculates sales tax doesn’t need to maintain any state But many services will maintain some kind of state As we will discuss, this may include Durable state, such as employee records Transactional state, that is maintained until a transaction completes Process state, which tracks the progress of a workflow Or session state, which maintains context across discreet interactions with a user Contracts

L‘idée principale de la SOA Chapitre 5 - Développement de Web services XML L‘idée principale de la SOA Messages Flux de données non encapsulées Pas de suppositions sur l‘implémentation Contrats: Frontières explicites Les types de données et les sémantiques y sont explicités Les types de données doivent permettre l‘évolution Les paramètres techniques de sécurité, de transactions pour les Services sont négociables dynamiquement Processus autonomes. « Building Blocks », et non pas des Silos. Before we begin, let us recap the four core tenets of service oriented architectures: Explicit boundaries, agreement on data contracts, compatibility through service contracts and autonomy. Services exchange messages that contain data. Data is not encapsulated in objects, but sent without any dependency on concrete implementation, programming models or certain infrastructures. The data content and format as well as the infrastructure functions supported for and required for the message are governed by data contracts and service contracts. The contracts shall allow evolution and change in a way that consumers and providers can be changed independently and their infrastructure functions can be dynamically configured and negotiated. Services are autonomous and applications are collections of building blocks and not closed silos.

Revue des standards des Web services Chapitre 5 - Développement de Web services XML Revue des standards des Web services

Qu’est ce qu’un Web Service ? Les Web Services sont des services offerts via le web Un service Web est un ensemble de protocoles et de normes utilisés pour échanger des données entre les applications Web Service = HTTP + XML Les prolifération des Services Web correspond à un nouveau standard d’architectures applicatives qui est le SOA (Service Oriented Architecture) Un 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.

Standards des Web services Les Standards décrivent : Qu’est ce qui circule “sur le fil” ? Formats et protocoles (SOAP) Qu’est ce qui décrit ce qui circule “sur le fil” ? Langage de Description (WSDL) Qu’est ce qui nous permet de trouver ces descriptions ? Référentiel (UDDI)

SOAP (Simple Object Access Protocol) Standard W3C (Initiative IBM et Microsoft) C’est un protocole de RPC pour l’invocation des méthodes d'objets distants Basé entièrement sur XML C’est une spécification non propriétaire Prend en charge : divers protocoles de transport (HTTP, SMTP,…) différents formats (MIME,…)

Structure d’un message SOAP SAOP Header (Optional) SAOP Body Message SOAP = Enveloppe ( Header + Body )

WSDL (Web Services Description Language) Standard W3C Langage de description des services Web Basé entièrement sur XML (Schéma XML) Définition de l’interface, de l’URL et du port du Web Service

Contrat WSDL Constitué par : Un composant d’interface : Format de transmission des messages Protocole du Service Web Opérations de transmission des messages Un composant d’implémentation : le point d’accès (URL) du Service Web

UDDI (Universal Description Discovery and Integration) Les Services Web n’ont un sens que si des utilisateurs potentiels peuvent les localiser C’est une technologie d'annuaire Recommandation OASIS (Consortium travaillant sur la standardisation des technologies Web Services) Référentiel défini lui-même en WSDL Référentiel Public / Privé

UDDI : comment ça marche ?

Composition du répertoire UDDI Chaque entrée du répertoire UDDI est constituée de trois parties : Les "pages blanches" décrivent l'entreprise qui offre le service (nom, adresse, contacts,…) Les "pages jaunes" comportent les catégories industrielles Les "pages vertes" : contiennent une description technique de l’interface

Récapitulatif SOAP, WSDL, et UDDI IBM, MICROSOFT ARIBA COMPAQ HP… C’est un protocole de RPC pour l’invocation des méthodes d'objets distants SOAP Standard W3C SOAP 1.2 C’est le langage de description des services Web IBM MICROSOFTARIBA Standard W3C WSDL 2.0 WSDL Entièrement basés sur XML C’est une technologie d'annuaire UDDI Recommandation OASIS UDDI 3.0 ARIBA

Scénario de déroulement 1 Enregistrement du service Annuaire UDDI Service Web Client SOAP SOAP 2 Recherche d’un service Interface WSDL HTTP 3 Récupération de l’interface du service proxy SOAP 4 Utilisation du service

Le protocole SOAP

Exemple de message SOAP 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 de réponse 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 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

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 Exemple de SOAP HEADER <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI"> 5 </t:Transaction> </SOAP-ENV:Header>

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.

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

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)

Le langage WSDL

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

Développer des Web services avec Apache Axis

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

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

Développement avec JAX-WS 2.0

Java API 4 XML-based Web Services Successeur de JAX-RPC. Actuellement en version 2.0 Permet de créer des services Web dans le conteneur Web dans le conteneur EJB Supporte les injections de dépendances

Exemple de Service @javax.ejb.Stateless () // à supprimer si le service est créé dans un WAR @javax.jws.WebService () public class SubjectInfo { @javax.jws.WebMethod public String getSubjectInfo (String subjectID) { ... } public String [] getAllSubjects () { // Référencement du service à partir d'un client @WebServiceRef (wsdlLocation="http://xxx:8080/SubjectInfoService/SubjectInfo?wsdl") static SubjectInfoService service; // Recherche du "port" SubjectInfo subjectInfo = service.getSubjectInfoPort (); System.out.println(subjectInfo.getSubjectInfo ("S07"));

Scénario de génération d'artéfacts Créer le service et le compiler Utiliser wsgen pour générer les artifacts Assembler dans un WAR/JAR et le déployer Utiliser wsimport pour générer les artifacts Coder le client Exécuter le client