La plate-forme J2EE - Master Informatique 2ème année
Transcription
La plate-forme J2EE - Master Informatique 2ème année
La plate-forme J2EE Master Informatique 2ème année Olivier Flauzac [email protected] Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 1 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 2 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 3 / 64 J2SE Standard Edition élément de base vaste API quelques services RMI JDBC Corba pour les postes client ou les application réseau légère permet le développement de client lourds Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 4 / 64 J2ME Micro Edition Java allégé possibilité de supprimer des composants non utilisés mise en place de composants de configuration spécifique gestion native de la plate-forme terminaux portables téléphones PDA versions spécifiques en fonction des besoins : liaison sans fil (WIFI, Bluetooth) gestion de l’énergie Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 5 / 64 J2EE Entreprise Edition API spécifique d’entreprise serveur d’application gestion de l’intégration Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 6 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 7 / 64 Architecture Différentes architectures définition de la localisation des traitements définition de la localisation des données définition de la localisation résultats Impact performance de l’application gestion des différents éléments déploiement et maintenance de l’application Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 8 / 64 Architecture à 2 niveaux Deux acteurs client : gestion du traitement serveur : gestion des données Problèmes maintenance complexe performances dépendantes de la puissance du client Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 9 / 64 Architecture à 3 niveaux Acteurs présentation : interface utilisateur métier : logique métier (applicative) données : BdD , XML , LDAP ... Avantages facile à déployer code applicatif modifiable indépendamment puissance déléguée à la couche métier Inconvénient évolution difficile composants de grande taille Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 10 / 64 Architecture à 3 niveaux Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 11 / 64 Architecture à multi-niveau Acteurs interface utilisateur : interactions entre l’utilisateur et l’application logique de présentation : mise en forme des affichages, mise en forme du traitement des requêtes logique métier : code spécifique à l’entreprise service d’infrastructure : fonctionnalités spécifiques (transaction, connexion ...) données Modèle J2EE Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 12 / 64 Architecture multi-niveau Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 13 / 64 Architecture multi-niveau Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 14 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 15 / 64 La plate-forme J2EE Principe norme de spécification d’infrastructure de gestion d’applications d’API Environnement J2EE infrastructure d’exécution ensemble de services accessibles Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 16 / 64 API J2EE JNDI Java Naming and Directory Interface API d’accès uniforme aux services d’annuaire et de nommage localisation et exploitation de ressources diverses CORBA, RMI, NIS, LDAP, DNS Authentification service unifié d’authetification mise en place hiérarchique : utilisateur domaine groupe Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 17 / 64 API J2EE JDBC Java Database Connectivity API d’accès aux bases de données Servlet composant serveur mise en place de l’architecture client / serveur remplace les script CGI Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 18 / 64 API J2EE JSP Java Server Page extension des CGI génération de pages WEB dynamiques intégration de logique métier dans du HTML à l’aide de XML ou de scriptlets concurent de ASP et PHP JMS Java Messaging Service API et infrastruture implémentation du modèle à messages Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 19 / 64 API J2EE JTA Java Transaction API interface standard entre le gestionnaire de transaction et les acteurs (application, gestionnaire de ressources, serveur) EJB Entrepise Java Beans composant fournissant des services accessible au travers d’interface hébergé dans un environnemnet d’exécution spécifique Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 20 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 21 / 64 Une plate-forme Plate-forme d’exécution base générique fournissant un ensemble de services élémentaires définition de la plate-forme en fonction des services recherché environnement d’exécution API standardisée extensibilité des API J2EE API serveurs d’application services Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 22 / 64 Serveur d’application Généralités environnement d’exécution des applications gestion de la concurrence n client accédant à 1 même application Quelques serveurs SUN AppServers Tomcat WebSphere BEA WebLogic ... Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 23 / 64 Rôles du Serveur d’application Session gestion de la session utilisateur mise en place de contextes particulier par client gestion des contextes clients pour une même application exploitée par plusieurs clients Montée en charge déploiement parallèle / distribué équilibrage de la charge reverse proxy Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 24 / 64 Rôles du Serveur d’application (suite) Reprise sur erreur stratégie de reprise sur faute gestion des données gestion des transactions Connexion aux sources de données persistance polling de connexion gestion de connexions multiples gestion des lots de requêtes Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 25 / 64 Architecture 1.4 Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 26 / 64 Architecture 1.5 Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 27 / 64 Interopérabilité Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 28 / 64 Architecture de la plate-forme Hiérarchisation des outils composants services d’infrastructures services de communications Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 29 / 64 Les composants Composants WEB assure la présentation - partie visible JSP (Java Server Page) La vue génération de HTML gestion de l’affichage et non du traitement inclusion de code Java dans du HTML inclusion de balises personnalisées Servlet Le contrôleur classe Java de traitement d’une requête peux de génération de code HTML génération possible de code XML Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 30 / 64 Les composants (suite) Composants Métier spécifiques au traitement des données propre à un secteur d’activité logique métier ou logique applicative interfaçage avec les bases de données EJB Enterprise Java Beans Le modèle Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 31 / 64 Services d’infrastructures Liste des services bases de données : JDBC services de nommages, annuaires : JNDI gestion des transactions : JTA / JTS connexion aux systèmes d’informations (ERP) : JCA supervision ; JMX Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 32 / 64 Services de communications Liste des services authentification et droits : JAAS communication et exécution entre objets : RMI WEB services communication asynchrone : JMS courrier électronique : Java Mail Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 33 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 34 / 64 JDBC Java Database Connectivity inclus dans Java 1.4 exploitation du package java.sql accès à des bases de données locales distantes API indépendante du SGBD nécessite l’utilisation d’un driver d’accès fonctionnement en client / serveur utilisation d’une architecture 3 tiers : présentation : le client traitement : le serveur d’application données : le SGBD Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 35 / 64 Drivers JDBC Drivers plus de 190 drivers existance pour la majorité des SGBD drivers «simples» ou «multiples» drivers ODBC drivers définis en 4 familles types de drivers : type 1 : drivers de type pont JDBC-ODBC accès local fourni avec le JDK type 2 : drivers appelant des fonctions natives (en C), partiellement écrit en Java type 3 : drivers 100% Java, utilisation d’un protocole générique type 4 : entièrement écrits en Java, exploitation du protocole réseau du SGBD Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 36 / 64 Le package java.sql java.sql définition des classes et interfaces interfaces Driver obtention d’une instance de type Connection Connection gestion des connexions avec le SGBD ResultSet gestion des résultats des requêtes classes DriverManager gestion des accès Types assure le mapping SGBD - Java Exceptions SQLException gestion des erreurs SQL SQLWarning gestion des warnings SQL DataTruncation gestion des corruptions de données Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 37 / 64 Mapping MySQL Types SQL CHAR VARCHAR TEXT REAL DOUBLE FLOAT DATE DECIMAL NUMERIC Olivier Flauzac (URCA) Types Java Méthode associée String String getString() float double float getFloat() double getDouble() Date BigDecimal Date getDate() BigDecimal getBigDecimal() La plate-forme J2EE [email protected] 38 / 64 Accès à une base de données 1 chargement du driver 2 connexion 3 préparation de la requête 4 exécution de la requête 5 exploitation des résultats 6 fermeture de la connexion Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 39 / 64 chargement du driver et connexion Chargement du driver Class . forName ( " com . mysql . j d b c . D r i v e r " ) . newInstance ( ) ; System . o u t . p r i n t l n ( " D r i v e r chargé " ) ; Connexion à la base S t r i n g u r l = new S t r i n g ( " j d b c : mysql : / / l o c a l h o s t / t e s t ? user= l o g&password=pas Connection c = DriverManager . getConnection ( u r l ) ; System . o u t . p r i n t l n ( " Connecté à l a base " ) ; Création d’un objet Statement Statement s t = c . c r e a t e S t a t e m e n t ( ) ; Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 40 / 64 Exécution dépendante du type de requête Consultation de données executeQuery(...) R e s u l t S e t r s = s t . executeQuery ( " s e l e c t ∗ from t a b l e ; " ) ; Modification des données executeUpdate(...) i n t v = s t . executeUpdate ( " i n s e r t i n t o t a b l e v a l u e s ( ’ . . ’ , . . . ) ; " ) ; Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 41 / 64 Exploitation des résultats Principe déplacement dans les lignes de résultat boolean next() lecture des informations xxx getXXX(int) (xxx : type des données) l’indice des informations débute à 1 ! ! ! Exemple while ( r s . n e x t ( ) ) { System . o u t . p r i n t ( r s . g e t S t r i n g ( 1 ) + " " ) ; System . o u t . p r i n t ( r s . g e t I n t ( 2 ) + " " ) ; ... } Fermeture de la connexion c . close ( ) Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 42 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 43 / 64 Servlets ? Définitions programme java autonome exécuté sur le serveur exécutable sur tous les serveurs «étendus» d’un moteur de servlet Principe fichier .class sur le serveur instanciation à la première utilisation accès par une URL : http://www.serveur.fr/contexte/maServlet exécution dans un thread Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 44 / 64 Pourquoi des servlets Caractéristiques persistance des données gestion de l’ensemble des informations et flux WEB : formulaires cookies sessions Intérêts efficacité (code semi compilé) résidentes multithreadées assurent la gestion du cache portables (Java) exploitent la totalités des possibilités serveur Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 45 / 64 Fonctionnement Requêtes Cycle de vie Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 46 / 64 Servlets de base : javax.servlet.Servlet Initialisation void i n i t ( S e r v l e t C o n f i g c o n f i g ) Gestion du traitement void s e r v i c e ( S e r v l e t R e q u e s t req , ServletResponse r e s ) Destruction void d e s t r o y ( ) Configuration et informations ServletConfig getServletConfig ( ) java . lang . S t r i n g g e t S e r v l e t I n f o ( ) Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 47 / 64 Servlets HTTP Principe gestion des servlet dans le cadre HTTP classe héritante de javax.servlet.Servlet Méthodes gestion des requêtes GET protected void doGet ( H t t p S e r v l e t R e q u e s t req , HttpServletResponse resp ) gestion des requêtes POST protected void doPost ( H t t p S e r v l e t R e q u e s t req , HttpServletResponse resp ) Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 48 / 64 Développement Approche développement par héitage servlet utilisateur héritage de javax.servlet.http.HttpServlet nécessité de masquer la (les) méthode(s) dans les servlets développées dépendant de l’application dépendant des méthodes d’accès objets implicites requête HttpServletRequest request réponse HttpServletResponse response gestion des flux d’entrée et de sortie Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 49 / 64 Gestion des données Formulaires gestion des formulaires et des méthodes (POST et GET) récupération des noms des champs et des valeurs Cookies utilisation de la classe javax.servlet.http.Cookie dépose et lecture depuis les classes HttpServletRequest et HttpServletResponse Sessions suivi de navigation réécriture d’URL enregistrement et accès aux données sur le serveur Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 50 / 64 Gestion des exécution Inclusion inclusion du résultat issu d’un autre traitement utilisation d’un RequestDispatcher passage des requêtes et réponses à l’éléments inclus ne pas fermer les flux dans la servlet incluse ! Délégation délégation de l’exécution à une autre servlet possibilité de création de chaînes d’exécutions réponse issue d’une auttre servlet utilisation d’un RequestDispatcher Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 51 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 52 / 64 JSP ? Principe code java intégré au HTML compilé à l’exécution en servlet styles de programmation jsp pur style XML Fonctionnement “extension” des servlet compilation en servlet avant l’exécution utilisation de toutes les techniques des servlets Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 53 / 64 Eléments Déclarations <%! i n t i = 1 5 ; %> <%! S t r i n g s = new S t r i n g ( " H e l l o " ) ; %> <jsp : declaration > i n t i = 15; </ j s p : d e c l a r a t i o n > <jsp : declaration > S t r i n g s = new S t r i n g ( " H e l l o " ) ; </ j s p : d e c l a r a t i o n > Expressions <%= i %> <%= s %> < j s p : expression > i </ j s p : expression > < j s p : expression > s </ j s p : expression > Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 54 / 64 Directives page <%@ page a t t r i b u t s %> < j s p : d i r e c t i v e . page a t t r i b u t s / > Attribut import session isThreadSafe info errorPage isErrorPage contentType pageEncoding Olivier Flauzac (URCA) Description packages à importer appartenance à une session (true ou false) gestion de la concurrence informations relatives à la page URL de la page d’erreur indicateur de page d’erreur type des données et encodage encodage de la page La plate-forme J2EE [email protected] 55 / 64 Directives include <%@ i n c l u d e a t t r i b u t s %> <jsp : d ir e c ti v e . include a t t r i b u t s / > Attribut file Olivier Flauzac (URCA) Description nom et chemin du fichier à inclure La plate-forme J2EE [email protected] 56 / 64 Script Scriptlets <% code Java %> <ul > <% f o r ( i n t j =0; j <10; j + + ) { o u t . p r i n t l n ( " < l i > " + j + " </ l i > " ) ; } %> </ u l > Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 57 / 64 Portée des éléments page accès limité à la page request accès limité à la page et aux pages incluses ou déléguées session accès depuis l’emsemble des éléments de la session application accès à l’emsemble des éléments Attention accès concurrents possible pour session et application Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 58 / 64 Plan 1 Java ? 2 Architecture des applications 3 La plate-forme J2EE 4 Environnement d’exécution 5 JDBC 6 Servlet 7 JSP 8 EJB Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 59 / 64 Définitions EJB composant Java portable, réutilisable, déployable assemblage de composants pour le développement d’applications exécution dans un conteneur 3 types d’EJB (Session, Entité, Message-Driven) Avantages gestion des services par les conteneurs transaction, autorisation, persistance ... isolement de la logique applicative règles métier accès aux données portabilité Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 60 / 64 EJB Session Rôles exécution de tâches pour les clients gestion des traitements Sans état exécutions successives “indépendante” exemple : fonction mathématique invocations déléguées possibles Avec état dédié à un client appels succesifs avec persistance pas d’invocation délégué Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 61 / 64 EJB entity Principe gestion des données objet métier existe dans un système de stockage “permanent” base de donnée, LDAP, XML ... Caractéristiques persistant gestion client, facture enchère, réservation Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 62 / 64 EJB Message-Driven Principe traitement desdonnée asynchrones gestion des messages Caractéristiques basé sur JMS Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 63 / 64 Des EJB pour Quoi ? Gestion des montées en charge développement de solutions clusters déploiement et distribution Gestion des clients hétérogènes accès aux EJB depuis différentes plate-formes garantie de l’intégrité de règles métier Développement en équipe centralisation de la logique métier répartition des tâches de manière indépendante Olivier Flauzac (URCA) La plate-forme J2EE [email protected] 64 / 64