Web services: implémentation en J2EE: Axis 2 / JAX-WS

Documents pareils
Introduction aux «Services Web»

Java pour le Web. Cours Java - F. Michel

Web Tier : déploiement de servlets

Compte Rendu d intégration d application

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

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.

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

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

Applications et Services WEB: Architecture REST

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

4. SERVICES WEB REST 46

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

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

Environnements de Développement

Messagerie asynchrone et Services Web

Programmation Web Avancée Introduction aux services Web

JOnAS Day 5.1. Outils de développements

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

Mise en œuvre des serveurs d application

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

Introduction à la plateforme J2EE

A. Architecture du serveur Tomcat 6

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

Utilisation de Jakarta Tomcat

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)

Introduction aux. services web 2 / 2

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

J2EE - Introduction. Développement web - Java. Plan du chapitre

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

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

Architectures Web Services RESTful

Hébergement de sites Web

10. Base de données et Web. OlivierCuré

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

SOAP Concepts Application à Glassfish

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Synthèse des concepts

MANUEL D INSTALLATION de GEONETWORK sur un serveur LINUX CentOS 4

Formation en Logiciels Libres. Fiche d inscription

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

Application Web et J2EE

JavaServer Pages (JSP)

JOnAS 5. Serveur d application d

TP1 : Initiation à Java et Eclipse

Urbanisme du Système d Information et EAI

Bases Java - Eclipse / Netbeans

Les architectures 3-tiers Partie I : les applications WEB

Business Process Execution Language

IBM DB2 Alphablox. d administration GC

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Environnements de développement (intégrés)

TP1 : Initiation à Java et Eclipse

Petit Déjeuner Pépinière du Logiciel Libre. 25 juin 2008

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

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

Présentation J2EE. Stéphane Croisier, Directeur Serge Huber, Directeur Technique. 13 Juin Jahia Ltd. All rights reserved.

Création d un service web avec NetBeans 5.5 et SJAS 9

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Le développement d applications Web

Catalogue des Formations Techniques

Architecture Orientée Service, JSON et API REST

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

Développement des Systèmes d Information

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

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

Cours en ligne Développement Java pour le web

Web Application Models

Introduction à Java. Philippe Genoud.

F O R M A T I O N CATALOGUE

Evaluation Idéopass Cahier d analyse technique

Projet de développement

PRODUCTS LIST (updated 11th January 2010)

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

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

Module BD et sites WEB

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

Java Enterprise Edition

En date du 11 décembre 2008

Solutions de gestion de la sécurité Livre blanc

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

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

JOnAS 5 Enterprise OSGi javaee compliant

Les Services Web. Jean-Pierre BORG EFORT

L art d ordonnancer. avec JobScheduler. François BAYART

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Notre Catalogue des Formations IT / 2015

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Java DataBaseConnectivity

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Urbanisation des Systèmes d'information

Cedric Dumoulin (C) The Java EE 7 Tutorial

Code Produit Nom Produit Dernière mise à jour. AM003 Alias Mobile On Demand Licence 1 mois 27/04/2015

DotNet. Plan. Les outils de développement

Systèmes d'informations historique et mutations

Le passage à l échelle de serveur J2EE : le cas des EJB

Groupe Eyrolles, 2003 ISBN : X

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

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

Transcription:

Web services: implémentation en J2EE: Axis 2 / JAX-WS

J2EE? Plateforme Java Serveur d applications Ensemble d APIs/Frameworks dédiées: JAX-WS, JSP/JSF, Java Beans, JPA, JMS Programmation côté serveur Logique applicative Gestion de l'interfaçage avec les sources de données Génération dynamique de contenu (pages webs, documents xml, images, )

Quelques serveurs J2EE Glassfish (SUN) Integre Metro (implementation de JAX-WS) Implementation de référence J2EE JBoss (JBoss.org) Jonas (ObjectWeb) WebSphere (IBM) Oracle Application Server Geronimo (apache.org) Tomcat (apache.org) + des bibliothèques

Modèle-vue-contrôleur: version J2EE JSP (HTML) BD Relationnelle WS Endpoint Autres Servlets Enterprise Java Beans BD XML Applications Encapsulées Vue Contrôle Modèle Données

Serveur J2EE Conteneur: serveur «contenant une machine virtuelle» Orientée composants Chaque composant a un rôle précis Permet de simplifier chacun des composants De nombreux composants sont fournis de manière standard Soit directement Soit générés à partir de spécifications de haut niveau APIs destinées à simplifier (?) la programmation des différents composants de application

Servlets Point d entrée d un client sur un serveur web J2EE Pages dynamiques (JSP) Similaires à des pages PHP, mais en Java Web Services En particulier si on utilise HTTP pour le transport

Servlets: principe Une classe Java Qui implémente interface javax.servlet.servlet En général en étendant la classe javax.servlet.http.httpservlet Un morceau dans un fichier de configuration (XML) du conteneur Relie la classe à un emplacement (i.e. une URL) du serveur

Servlets HTTP: du côté classes Java Méthodes Java appelées lors d une requête d un client: doget, dopost, doput, dodelete En fonction de la méthode HTTP utilisée Arguments représentant la requête et la réponse Init et destroy Permettent de réserver et de libérer les ressources nécessaires à la servlet Attention à aspect concurrent: Une servlet peut être amenée à gérer plusieurs requêtes simultanément Exemple

Servlets: du côté de la configuration du conteneur Fichier WEB-INF/web.xml: <servlet> <display-name>datepage</display-name> <servlet-name>datepage</servlet-name> <servlet-class>fr.univlyon1.ecoquery.cours.datepage</servlet-class> </servlet> <servlet-mapping> <servlet-name>datepage</servlet-name> <url-pattern>/datepage</url-pattern> </servlet-mapping>

Apache Tomcat Conteneur de servlet uniquement et non pas tout J2EE! Relativement léger Installation de base ~12 Mo > 100 Mo pour un serveur J2EE complet Possibilité d ajouter des modules au besoin (ex: Axis 2 ou Metro)

Servlets: suffisant pour des services Web basiques Un point d accès à un service: Reçoit une requête HTTP Extrait de la requête un document SOAP Effectue un traitement Créé un document SOAP résultat Renvoie ce document comme réponse Réalisable par une servlet en utilisant les APIs XML Java SAAJ

Correspondance objet <--> XML Etant donné un modèle de document XML (i.e. un schéma XML ou une DTD) en faire une représentation sous forme d objet Java Représenter les objets d une certaine classe par un document XML Sérialisation XML

Axis 2: WSDL2Java Conversion d un fichier WSDL en un ensemble de classes Java Pour représenter le contenu des messages Une classe squelette à compléter pour implémenter les différentes opérations Éventuellement des classes intermédiaires qui vont s occuper de la gestion du message SOAP (stubs)

Fonctionnement: runtime Servlet Axis 2 Reçoit la requête Renvoie La réponse Stub Généré Transforme le XML en Objet et inversement Squelette généré et modifié Gère le traitement applicatif de la requête

Axis2 Databinding Framework ADB Conversion la plus simple de XML en objet Expanded mode (mode expansé) Une classe pour chaque element externe Non imbriqué dans un complextype Une classe pour chaque complextype nommé Mode systématiquement utilisé par le compilateur en ligne de commande Wrapped mode (mode «intégré») Une classe contenant toutes les classes représentant les documents XML à traiter Limitations: Difficulté à gérer les schémas complexes Gère uniquement <sequence> et <all> Pas de restriction ou d extension de type complexes

ADB: Lien XML - Java Une classe par type complexe Les attributs et les éléments sont transformés en variables d instances Une classe par élément hors type complexe Les restrictions sur les types simples sont converties dans le type primitif Java le plus proche En général, cela revient à utiliser le type de base qui a servi à la restriction

Exemple (tutoriel Axis 2) Fichier StockQuoteService.wsdl Génère: adb/stockquoteservicemessagereceiverinonly.java adb/stockquoteservicemessagereceiverinout.java adb/stockquoteserviceskeleton.java adb/stockquoteserviceskeletoninterface.java pojo/extensionmapper.java pojo/getprice.java pojo/getpriceresponse.java pojo/update.java

Génération de clients WSDL2Java peut être utilisé pour générer un client Plus précisement: L ensemble des classes pour (dé)sérialiser le XML Une classe «stub» pour faciliter accès au service Une classe client exemple Exemple: ADBClient.java

JAXB: ADB version JAX-WS Gère complètement XML Schema Bi directionnel: Classes Java -> XML Schema XML Schema -> classes Java Mécanisme d annotations Permet de personnaliser la liaison XML/Java

XMLBeans Plus complet que ADB Conserve un lien fort avec le XML: XmlCursor Représente une position dans le document XML correspondant à objet Accès bas niveau Modèle objet proche du schéma XML de départ

JiBX: Binding XML to Java Code C est le programmeur qui donne le lien entre le schéma XML et ses propres classes Java Gain en flexibilité Pratique lorqu on utilise des classes déjà existantes Dans le cas de exposition d une application préexistante comme un service web Un peu plus lourd à mettre en place

Exemple de binding simple Source: tutoriel JiBX

Exemple JiBX - 2 Source: Tutoriel JiBX

Exemple JiBX: variations de structures Source: tutoriel JiBX

Exemple JiBX: collections Source: tutoriel JiBX

Quelques options L attribut ordered="false" indique que les valeurs peuvent ne pas être ordonnées comme dans la specification L attribut flexible="true" indique que on ignore les valeurs qui n apparaissent pas dans le binding

Déploiement Structure: META-INF/services.xml META-INF/monservice.wsdl mon/nom/de/package/maclasse1.class mon/nom/de/package/maclasse2.class mon/nom/de/package/classegeneree.class Archive.aar (i.e. jar) à placer dans le repertoire de tomcat: webapps/axis2/web-inf/services/ Description du service pour le runtime Axis Généré par WSDL2Java

java2wsdl Crée un fichier WSDL à partir d une classe Java Bien pour: Exposer facilement une application existante (vue à travers une classe) comme un service Web Faire du prototypage Plus rapide que le développement d un fichier WSDL à la main Cette approche est cependant déconseillée en production: elle ne permet pas un bon contrôle du WSDL généré

JAX-WS Ensemble d APIs pour la programmation de services web sur J2EE Inclus SAAJ, JAXB Utilisation simplifiée par des annotations dans les classes Java Spécification de la correspondance XML - Objets Facilitation de la programmation des points d entrée de services

Annotations JAXB Package java.xml.bind.annotation @XmlRootElement: classe pouvant être (dé) sérialisée dans un document @XmlElement: propriété codée sous forme d élément @XmlAttribute: propriété codée sous forme d attribut (attention au type -> type simple) @XmlTransient: non sérialisé @XmlValue: texte dans élément (pour les types complexes XML Schema basés sur des simplecontent)

Exemple: classe CD Cd.java TestCd.java cd.xml

Annotations pour les points d accès Classe ou interface annotée avec @WebService Méthodes codant les opérations annotées avec @WebMethod @WebParam peut permettre de spécifier des infos sur les paramètres (ex: quelle partie du message, ce paramètre provient-il du header, etc) Les paramètres sont des objets extraits du XML via JAXB @WebResult similaire à @WebParam Utilisation de la classe javax.xml.ws.holder<t> Annotation compatibles avec les beans (en particulier ajout possible de @Stateless) Déploiement: Mapping URL <-> service dans un fichier de configuration (sun-jaxws.xml pour Metro)

Génération de code A partir du Java: Génération automatique de WSDL+XML Schema A partir du WSDL Génération de classes annotées pour représenter les documents spécifiés par le schéma Génération d une interface annotée avec @WebService. Il reste à implémenter

Travailler directement avec le XML Classe implémentant Provider<Source> ou Provider<SOAPMessage> @WebServiceProvider @ServiceMode value=service.mode.message ou PAYLOAD pour les Provider<Source> Plus léger que implémentation complète via une servlet, mais permet de gérer directement le XML. Se déploie similairement à une implémentation de service via une correspondance XML - objet