Les services Web (fin) Les architectures orientées composants. Jeremy Fierstone Jean-marc Farinone

Documents pareils
JavaServer Pages (JSP)

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

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

Web Tier : déploiement de servlets

Java pour le Web. Cours Java - F. Michel

Introduction aux «Services Web»

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

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

Messagerie asynchrone et Services Web

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.

Web Application Models

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

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

RMI le langage Java XII-1 JMF

Environnements de Développement

Compte Rendu d intégration d application

Les Services Web. Jean-Pierre BORG EFORT

Mise en œuvre des serveurs d application

Application Web et J2EE

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

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

Les Architectures Orientées Services (SOA)

Le cadre des Web Services Partie 1 : Introduction

Introduction à la plateforme J2EE

CQP Développeur Nouvelles Technologies (DNT)

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

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

2 Chapitre 1 Introduction

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

Programmation Web Avancée Introduction aux services Web

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

Business Process Execution Language

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)

Systèmes d'informations historique et mutations

Architecture Orientée Service, JSON et API REST

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

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

Module BD et sites WEB

TP1 : Initiation à Java et Eclipse

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

Les architectures 3-tiers Partie I : les applications WEB

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

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

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

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

SOAP Concepts Application à Glassfish

Création d une application JEE

Urbanisation des Systèmes d'information

Plan. Department of Informatics

Approche Contract First

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

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

Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

Analyse des techniques et des standards pour l interopérabilité entre plateformes

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

Documentation CAS à destination des éditeurs

Auto-évaluation Programmation en Java

Java Naming and Directory Interface

Programmation Orientée Objet

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

Le développement d applications Web

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

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

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Urbanisme du Système d Information et EAI

contact@nqicorp.com - Web :

Composition semi-automatique de Services Web

Applications et Services WEB: Architecture REST

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

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

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

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

Architectures Web Services RESTful

Programmer en JAVA. par Tama

BPEL Orchestration de Web Services

Application web de gestion de comptes en banques

Services Web publication et découverte

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

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

Programmation par composants (1/3) Programmation par composants (2/3)

Alfstore workflow framework Spécification technique

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction à Java. Philippe Genoud.

Aspects techniques : guide d interfaçage SSO

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

Développement des Systèmes d Information

Vulgarisation Java EE Java EE, c est quoi?

Groupe Eyrolles, 2005, ISBN :

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

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Programmation Internet Cours 4

Composants Logiciels. Le modèle de composant de CORBA. Plan

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

4. SERVICES WEB REST 46

Java DataBaseConnectivity

Bases Java - Eclipse / Netbeans

Utilisation de Jakarta Tomcat

Transcription:

Les services Web (fin) Les architectures orientées composants Jeremy Fierstone Jean-marc Farinone 1

Résumé de l'épisode précédent 2

Les services Web Jeremy Fierstone Email : fierston@essi.fr SAR5 Novembre 2002 Merci à Mireille Blay-Fornarino, Didier Donsez Michel Riveill, Microsoft, Sun pour leurs slides 3

SOA : une architecture fournisseur de services 1. publication d'une annonce annuaire 2. recherche d'un service 3. mise en correspondance client JMF 4

Services web (= web services) WSDL = Web Services Description Language = format XML pour décrire un service web SOAP = Simple Object Access Protocol = protocole d'envoi de messages formatés en XML entre client et serveur web services La couche transport utilisé est soit HTTP (d'où le nom de web services) soit SMTP (i.e. le mail) échange de messages synchrones (en attente de réponse) ou asynchrone (publication, lecture de réponse plus tard) UDDI = Universal Description Discovery and Integration = annuaire de services qui recense des services Web. JMF 5

Les services Web WSDL : Web Services Description Language Merci à Didier Donsez 6

WSDL Spécification (09/2000) Ariba, IBM, Microsoft TR W3C v1.1 (25/03/2001) Objectif Décrire les services comme un ensemble d opérations et de messages abstraits relié (bind) à des protocoles et des serveurs réseaux Grammaire XML (schema XML) Modulaire (import d autres documents WSDL et XSD) Séparation entre la partie abstraite et concrète 7

WSDL Interface <definitions> <import> <types> <message> Implementation <definitions> <import> <service> <port> <porttype> <binding> 8

Éléments d une définition WSDL <types> Contient les définitions de types utilisant un système de typage (comme XSD). <message> Décrit les noms et types d un ensemble de champs à transmettre Paramètres d une invocation, valeur du retour, <porttype> Décrit un ensemble d opérations. Chaque opération a zéro ou un message en entrée, zéro ou plusieurs messages de sortie ou de fautes <binding> Spécifie une liaison d un <porttype> à un protocole concret (SOAP1.1, HTTP1.1, MIME, ). Un <porttype> peut avoir plusieurs liaisons! <port> Spécifie un point d entrée (endpoint) comme la combinaison d un <binding> et d une adresse réseau. <service> Une collection de points d entrée (endpoint) relatifs. 9

Élément <types> Contient les définition de types utilisant un système de typage (comme XSD). Exemple <!-- type defs --> <types> <xsd:schema targetnamespace="urn:xml-soap-address-demo" xmlns:xsd="http://www.w3.org/1999/xmlschema"> <xsd:complextype name="phone"> <xsd:element name="areacode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:string"/> <xsd:element name="number" type="xsd:string"/> </xsd:complextype> <xsd:complextype name="address"> <xsd:element name="streetnum" type="xsd:int"/> <xsd:element name="streetname" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:int"/> <xsd:element name="phonenumber" type="typens:phone"/> </xsd:complextype> </xsd:schema> </types> 10

Outils Générateur WSDL à partir de déploiement SOAP ou EJB, Générateur de proxy SOAP à partir de WSDL Toolkits (Wsdl2Java / Java2Wsdl, ) Propriétaires (non normalisés) 11

Les services Web UDDI : Universal Description, Discovery and Integration 12

UDDI Spécification (09/2000) Ariba, IBM, Microsoft +260 autres sociétés Objectifs annuaire mondial d'entreprises pour permettre d'automatiser les communications entre prestataires, clients, etc. plusieurs entrées indexées : nom, carte d'identité des sociétés, description des produits, services applicatifs invocables à distance (références des connexions) Indexation des catalogues propriétaires (ebxml, RosettaNet, Ariba, Commerce One, etc.) Grammaire XML (schéma XML) Soumission/interrogation basées sur SOAP et WSDL 13

Exemples d'annuaire UDDI moteur de recherche de service web : http://soapclient.com/uddisearch.html annuaires les plus connus : L opérateur de référence UDDI : http://uddi.xml.org/ Microsoft : http://uddi.microsoft.com IBM : http://uddi.ibm.com 14

UDDI Schema Interface Implementation <businessentity> <businessservice> <tmodel> <bindingtemplate> <businessservice> <tmodel> <bindingtemplate> 15

Références Services Web : Spécifications officielles : http://www.w3c.org Documentations et exemples en ligne : http://www.xmlbus.com SOAP : Spécification SOAP 1.1 : http://www.w3c.org/tr/soap Spécification SOAP 1.2 : http://www.w3c.org/tr/soap12 Implémentations : http://www.soapware.org Exemples en ligne : http://soapclient.com/soaptest.html UDDI : Spécification : http://www.uddi.org Serveur UDDI : http://uddi.microsoft.com et http://uddi.ibm.com Cours : Didier Donsez, Web Services Michel Riveill, SOAP 16

Un environnement pour WS : Axis Jean Marc Farinone Email : farinone@cnam.fr 17

Un environnement pour des WS : Axis Page d'accueil : http://ws.apache.org/axis/ Cliquer sur les premiers liens pour charger une version d'axis (1.4 le 28 mars 2008). On récupère un.zip à extraire. Axis est un environnement de développement pour WS (classes pour faire des services et clients WS) mais aussi une application Web. Voir tutorial d'axis à http://ws.apache.org/axis/java/userguide.html JMF 18

Développement d'un client et serveur WS Le service web sera encapsulé dans l'appli web Axis. Le client est un programme Java Un service web complet : Reponse.jws public class Reponse { public String reponds(string st) { return "bonjour " + st; } } public String discoucou() { return "Coucou "; } Ben oui c'est une classe Java. Le fichier doit avoir pour extension.jws JMF 19

Le serveur WS Reponse.jws Il est placé dans l'application web Axis. Qui a la première utilisation, va compiler ce fichier Java, exécuter la méthode appelée et retourner le résultat (si tout se passe bien!) Une manière d'accéder à ce Web Service est, dans un client web, de demander la page d'url : http://localhost:8080/axis/reponse.jws Une démonstration SVP. OK! Pourquoi cela fonctionne? Réponse : en fait tout ce qui se termine par.jws est traité par la servlet AxisServlet (voir le web.xml de l'application web Axis) JMF 20

Le client WS HelloClient.java package hello; import org.apache.axis.client.call; import org.apache.axis.client.service; import org.apache.axis.encoding.xmltype; import org.apache.axis.utils.options; import javax.xml.rpc.parametermode; public class HelloClient { public static void main(string [] args) throws Exception { Options options = new Options(args); String endpoint = "http://localhost:" + options.getport() + "/axis/reponse.jws"; args = options.getremainingargs(); if (args == null args.length!= 1) { System.err.println("Usage: java HelloClient [nom]"); return; } String nom = args[0]; Service service = new Service(); Call call = (Call) service.createcall(); call.settargetendpointaddress( new java.net.url(endpoint) ); call.setoperationname( "reponds" ); call.addparameter( "st", XMLType.XSD_STRING, ParameterMode.IN ); call.setreturntype( XMLType.XSD_STRING ); String ret = (String) call.invoke( new Object [] { nom }); } } System.out.println("resultat retourné : \n" + ret); JMF 21

Et XML (SOAP) dans tout çà? Nous n'avons fait que (!) de la programmation Java. Quid de SOAP? En fait les messages échangés entre le client et le serveur WS sont en SOAP. Si, si. JMF 22

TCPMonitor : tcpmon Axis propose un outil qui permet de voir les messages TCP échangés entre un client et un serveur : TCPMonitor Il suffit d'indiquer que le client envoit les messages à... TCPMonitor, que TCPMonitor envoit les messages au serveur, et tout échange entre client et serveur est tracé dans cet outil. On lance cet outil par : java org.apache.axis.utils.tcpmon JMF 23

Utilisation de TCPMonitor 1/4 Le client est programmé par : String endpoint = "http://localhost:7777" + "/axis/reponse.jws";... Service service2 = new Service(); Call call2 = (Call) service2.createcall(); call2.settargetendpointaddress( new java.net.url(endpoint) );... Lorsque TCPMonitor est lancé on obtient le premier écran : JMF 24

Utilisation de TCPMonitor 2/4 Indiqué le port écouté dans le champ de texte qui suit dans "Listen Port #". Ici 7777. Et cliquer le bouton Add JMF 25

Utilisation de TCPMonitor 3/4 Dans le nouvel onglet obtenu, cocher "XML Format" et cliquer "Switch Layout". Puis lancer le client. Les messages véhiculés entre client et serveur WS seront affichés. JMF 26

Utilisation de TCPMonitor 4/4 JMF 27

Bibliographie http://fr.wikipedia.org/wiki/service_oriented _Architecture http://java.sun.com/javaee/5/docs/tutorial/do c/bnayk.html : la partie du Java EE 5 tutorial consacrée aux services web http://www.w3.org/2002/ws/desc/ : page d'accueil du "Web Services Description Working Group" http://ws.apache.org/axis/ : implémentation open source Axis pour construire des services web JMF 28

Architecture de composants Jean-Marc Farinone Maître de conférences CNAM Paris farinone@cnam.fr 29

composant =? (1/2) Un "programme" (du "logiciel") qui s'intègre bien avec d'autres En général qui s'intègre bien avec un environnement d'exécution environnement d'exécution = un conteneur Ce conteneur lui apporte des services (de création, de lancement automatique de méthodes, etc.) Le composant amène des parties applicatives 30

composant =? (2/2) = un objet (donc méthodes donc code) qui vérifient quelques contraintes pour pouvoir bien se marier avec son environnement Souvent des "petites" contraintes syntaxiques L'environnement peut amener de grosses fonctionnalités (sécurité, transactionnel, etc.) exemple de composants Java : applet, JavaBeans, etc. 31

SCA : Service Component Architecture "= un ensemble de spécifications qui décrivent un modèle pour bâtir des applications s'inscrivant dans une architecture orientée service (appelée aussi SOA). Les applications basées sur SCA sont en fait un assemblage de composants, chaque composant implémente une partie de la logique métier et peut dépendre de services,..." source : Wikipedia http://fr.wikipedia.org/wiki/service_component_arc hitecture 32

SCA : une présentation A priori indépendant des langages de programmation et des couches réseau sous jacentes (HTTP, RMI, CORBA,...) Les principaux acteurs : BEA, IBM, IONA Technologies, Oracle, SAP, Siebel Systems, Sybase Spécifications à : http://xml.coverpages.org/sca- AssemblyModel-V09.pdf (SCA Version 0.9, November 2005) 33

Un exemple d'architecture de composants Java EE = Java Entreprise Edition (anciennement Java 2 EE) Amène une architecture pour de la programmation distribuée (RMI, JMS, ) et de composants (servlets, JSP, EJB, etc.) Pour les servlets/jsp : composants qui s'exécutent dans une JVM contenu dans un serveur (web) Pour les EJB : composants qui s'exécutent dans une JVM conteneur d'ejb 34

Une servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MaPremiereServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Etape 1. Spécifier le type MIME du contenu de la réponse response.setcontenttype("text/html"); // Etape 2. Récupère le PrintWriter pour envoyer des données au client PrintWriter out = response.getwriter(); } // Step 3. Envoyer l information au client out.println("<html>"); out.println("<head><title>bonjour Servlet</title></head>"); out.println("<body>"); out.println("<h1> Bonjour à tous les étudiants de la valeur RSX102</h1>"); out.println("il est : " + new java.util.date()); out.println("</body></html>"); } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request, response); } Traité quand le navigateur demande l URL... qui mène à la servlet! JMF 35

Une JSP fichier MaDate.jsp <html><head><title>obtenu par une JSP</title></head> <body> <h3>bonjour de ma part </h3> <hr> La date courante est : <%= new java.util.date() %> </body> </html> Traité quand le navigateur demande l URL de la JSP : http://serveurweb:<port>/.../madate.jsp JMF 36

JSP et Servlets Servlet = du code Java contenant de l'html JSP = une page HTML contenant du code Java Concrètement avec les JSP : les parties statiques de la page JSP sont écrites en HTML les parties dynamiques de la page JSP sont écrites en Java JMF 37

JSP, Servlets et Web services Les servlets et JSP sont souvent des clients de web services On a l'architecture : I n t e r n e t Serveur web dynamic build HTML Files Servlets ou JSP Web service JMF 38

Servlets vs. JSP : Architecture MVC modèle = les données accédées par un code Java (JDBC, RMI, EJB, etc.) vues = JSP contrôleur = servlets JMF 39

Architecture MVC (suite) Syntaxe dans la servlet pour lancer la JSP : public void dopost(httpservletrequest request, HttpServletResponse response){ ServletContext context = getservletcontext(); // héritée de GenericServlet RequestDispatcher dispatcher = context.getrequestdispatcher("/mapagemiseenforme.jsp"); dispatcher.forward(request, response); } JMF 40

Les Entreprise JavaBeans (EJB) Jean-Marc Farinone farinone@cnam.fr Maître de Conférences Conservatoire National des Arts et Métiers CNAM Paris (France) 41

L'idée essentielle Se concentrer sur la logique métier à développer (= modéliser, coder les notions du domaine, ) et sous-traiter les problèmes connus de : Persistance Transactions Sécurité Réserve (pool) d objets, monter en charge, etc. à un conteneur. Donc fabriquer des composants qui s'intégreront bien entre eux et avec le conteneur C'est le "mariage entre le monde transactionnel et le monde des composants orienté objet" Version 3.0 depuis le 27 juin 2005 Compatibilité et interopérabilité avec les EJB 2.1 42

Architecture des EJB (1/2) On passe d'une architecture N-tiers classique : Couche Présentation Couche intermédiaire Couche Système d'information de l'entreprise RMI CORBA 43

Architecture des EJB (2/2) à une architecture qui encapsule les composants Couche Présentation Couche intermédiaire Couche Système d'information de l'entreprise Serveur d'application EJB EJB 44

Ce qu'amène le conteneur amène des services de nommage, de gestion du cycle de vie, persistance, sécurité, transaction répartie ces services peuvent demander de lancer des méthodes fournies par le bean encapsulation d un composant : les clients devront passer par le conteneur pour accéder à un EJB 45

Les différents catégories d'ejb EJB session modèlise une suite d'interactions sans état (stateless) : => plusieurs clients différents peuvent être associés au même EJB en même temps avec état (stateful) => c est le même client qui utilise cet EJB session avec état pendant une suite d'invocations EJB entité modèlise des données BMP (Bean Managed Persistance) CMP (Container Managed Persistance) EJB orienté message (écoute derrière des files ou des sujets et sont activés de manière asynchrone) 46

Bibliographie http://cedric.cnam.fr/~farinone/java : site pour la programmation Java et Java Entreprise Edition 47