J2EE : Java Enterprise Edition Vue générale Plan J2EE Modèle 3 tiers Les composants Les communications entre clients et serveurs Les « containers » Les 3 tiers Le tiers client Le tiers web Le tiers « affaires » Déploiement Application Web Le modèle d’application de J2EE Les composants de J2EE Sur le client Applications client Fournir une interface plus riche que ce qui peut être fait en html Accès aux BDs, aux EJBs, servlets… Application web Browser web Pages web dynamiques En général pas d’accès au BD sur le serveur, la logique d’affaire reste simple Applets Il sera possiblement nécessaire d’avoir un plug-in et de fichier de politiques de sécurité Les composants de J2EE Sur le serveur Composants web Java servlets, JavaServer Faces, JSP Composants entreprises Enterprise JavaBeans (EJB) Les composants de J2EE Composants JavaBeans Pas des composants J2EE Utiles pour gérer les flots de données entre le client et le serveur ainsi qu’entre le serveur et les BDs Différences entre les classes J2SE et les composants J2EE Les composants sont destinés à être déployées, exécutées et gérées par un serveur La communications entre le client et le serveur Directement Par le biais d’un client s’exécutant dans un browser via JSP ou des servlets Compromis Mettre le plus de fonctionnalités sur le client près de l’usager (thick client) Décharger le client de ces fonctionnalités et les mettre sur le serveur (thin client) Le tiers Web Les composants Web Servlets Classes Java qui traitent dynamiquement les requêtes et construisent les réponses Pages JSP Documents textes qui s’exécutent en tant que servlets, mais permettent de créer du contenu statique de manière plus naturelle JavaServerFaces S’appuie sur les servlets et JSP Fournir un framework de composants d’interfaces usagers pour construire des applications web Les pages html statiques, les applets et les classes utilitaires côté serveur ne sont pas considérés comme des composants web par la spécifications J2EE Le tiers « affaires » Implémente la logique d’affaires Reçoit les données du client Les traite Les emmagasine, le cas échéant Les « containers » J2EE Les applications multi-tiers sont difficiles à écrire Beaucoup de code entrelacé pour gérer les transactions, l’état, le pooling des ressources, etc. Container Sert d’interface entre les fonctionalités de bas niveau qui sont spécifiques à une plateforme Avant de pouvoir exécuter un composant web, EJB ou d’application client L’assembler dans un module J2EE Le déployer dans son conteneur Container et services de support du serveur Adapte/configure les fonctions de support du serveur Sécurité S’assurer que les ressources système ne sont accédées que par les usagers authorisés Transactions Recherche JNDI (Java Naming and Directory Interface) Connexion remote Gestion des communications de bas niveau entre les clients et les EJB Etc. Types de containers Types de containers Le container serveur J2EE Fournit les containers web et EJB Le container EJB Gère l’exécution des EJB Le container Web Gère l’exécution des pages JSP et des servlets Le container de l’application client Gère l’exécution des applications clients Le container d’applets Browser + Java plug-in Support pour les services web Les services web sont des applications d’affaires basées sur le web qui utilisent des standards fondés sur XML et des protocoles de transport pour échanger des données avec les clients Java EE XML API Protocole de transport SOAP WSDL (Web Services Description Language) UDDI (Universal Description, Discovery and Integration) ebXML Packaging des applications Fichier EAR (Enterprise ARchive) Fichier JAR avec une extension .ea des modules J2EE des fichiers de descriptions de déploiement • Java EE deployment descriptor : paramètres génériques – Exemple : moduleType.xml • Runtime deployment descriptor: paramètres spécifiques – exemple : sun-moduleType.xml Structure d’un fichier EAR Les modules J2EE Module EJB : fichiers .class des ejb + descripteur Fichier .jar Module web fichiers .class des servlets, fichiers JSP, fichiers .class des classes utilitaires, fichier html et images, + descripteur Fichier .war (Web ARchive) Module de l’application client Fichiers .class + descripteur Fichiers .jar Modules des adapteurs pour les ressources Interfaces Java, classes, librairies natives, documentation, + descripteur Fichier JAR avec extension .rar (resource adapter archive) Java EE APIs Java EE APIs Enterprise JavaBeans Technology Java Servlet Technology JavaServer Pages Technology Java Message Service API Java Transaction API JavaMail API JavaBeans Activation Framework Java API for XML Processing Java API for XML-Based RPC SOAP with Attachments API for Java Java API for XML Registries J2EE Connector Architecture JDBC API Java Naming and Directory Interface Java Authentication and Authorization Service Simplified Systems Integration Les applications Web Une extension dynamique d’un serveur web ou d’un serveur d’application Orientée présentation Génération de pages web interactives et de contenu dynamique en réponse aux requêtes • Servlets et pages JSP Orientée service Implémentaion du point d’entrée d’un service web • les applications web oriéentée présentation sont souvent clientes des applications web orientées services Éléments de base Composants web Servlets, pages JSP ou point d’entrée de service web 1. 2. 3. 4. 5. 6. Le client envoie une requête http au serveur Conversion par le serveur en objet HTTPServletRequest Livraison de l’objet au composant web Réponse au serveur sous forme d’objet HTTPServletResponse Conversion par le serveur en réponse HTTP Envoie de la réponse au client Application web Servlet vs JSP Servlet Applications orientées services Les fonctions de contrôle des applications orientées présentation Distribution des requêtes Manipulation des données non textuelles Pages JSP Plus appropriées pour générer des balises textuelles Servlet La base de toutes les technologies des applications web Chaque technologie ajoute un niveau d’abstraction qui facilite le prototypage et le développement d’applications web plus faciles à maintenir, plus facile à passer à l’échelle, plus robustes. Container Web Services offerts par la plateforme d’exécution Acheminement des requêtes Sécurité Concurrence Gestion du cycle de vie Quelques APIs disponibles Noms Transactions Courrier électronique Configuration d’une application web L’information de configuration Un fichier XML Web application deployment descriptor (DD) Voir spécification Java Servlet Cycle de vie d’une application web 1. Coder les composants web. 2. Ecrire le fichier DD (web application deployment descriptor). 3. Compiler les composants de l’application web e tdes classes utilitaires référencées par les composants. 4. Optionnellement, packaging de l’application dans une unité déployable. 5. Déployer l’application web dans un container web. 6. Accéder à l’URL qui référence l’application web Module web Module web La plus petite unité déployable et utilisable de ressources web Ressources web Composants web Fichiers de contenu web statique • Images, pages web Classes utilitaires du côté serveur (ex: chariot) En général des java beans Classes du côté client Applets et classes utilitaires Structure d’un module web Déploiement d’un module web Structure de fichiers Fichier WAR Doit contenir un DD Racine contextuelle de l’application web Mapping des noms portables des ressources vers les ressources du serveur d’application Configuration d’applications web Mapping des URLs en composants web Déclaration des fichiers de bienvenue Liste de files que le container web va concaténer à une requête pour un URL qui ne correspond pas à un composant web E.g. welcome.html host:port/webapp/directory, ne correspond à aucun composant web Transformé en host:port/webapp/directory/welcome.html Paramètres d’initialisation Du contexte (getServletContext()) <context-param> <param-name> <param-value> Du composant web <init-param> <param-name> <param-value> Configuration d’une application web Mapping des erreurs sur des écrans d’erreurs <error-page> <exception-type> //exception ou le code d’erreur HTTP <location> // nom de la ressource à invoquer en cas d’erreur // doit être précédé d’un / Exemple de code d’erreur HTTP 404: Indicates that the requested resource is not available 500: Indicates that an error occurred inside the HTTP server that prevented it from fulfilling the request 503: Indicates that the HTTP server is temporarily overloaded and unable to handle the request Configuration d’une application web Déclaration de références à des ressources utilisées par l’application Annotations Java EE : BD, service web