La plate-forme J2EE LPRO CMSII Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 1 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 2 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 3 / 71
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 olivier.flauzac@univ-reims.fr 4 / 71
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 olivier.flauzac@univ-reims.fr 5 / 71
J2EE Entreprise Edition API spécifique d entreprise serveur d application gestion de l intégration Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 6 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 7 / 71
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 olivier.flauzac@univ-reims.fr 8 / 71
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 olivier.flauzac@univ-reims.fr 9 / 71
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 olivier.flauzac@univ-reims.fr 10 / 71
Architecture à 3 niveaux Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 11 / 71
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 olivier.flauzac@univ-reims.fr 12 / 71
Architecture multi-niveau Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 13 / 71
Architecture multi-niveau Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 14 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 15 / 71
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 olivier.flauzac@univ-reims.fr 16 / 71
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 olivier.flauzac@univ-reims.fr 17 / 71
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 olivier.flauzac@univ-reims.fr 18 / 71
API J2EE JSP JMS 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 Java Messaging Service API et infrastruture implémentation du modèle à messages Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 19 / 71
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 olivier.flauzac@univ-reims.fr 20 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 21 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 22 / 71
Une plate-forme Plate-forme d exécution J2EE API 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 serveurs d application services Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 23 / 71
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 olivier.flauzac@univ-reims.fr 24 / 71
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 olivier.flauzac@univ-reims.fr 25 / 71
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 olivier.flauzac@univ-reims.fr 26 / 71
Architecture 1.4 Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 27 / 71
Architecture 1.5 Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 28 / 71
Interopérabilité Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 29 / 71
Architecture de la plate-forme Hiérarchisation des outils composants services d infrastructures services de communications Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 30 / 71
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 olivier.flauzac@univ-reims.fr 31 / 71
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 olivier.flauzac@univ-reims.fr 32 / 71
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 olivier.flauzac@univ-reims.fr 33 / 71
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 olivier.flauzac@univ-reims.fr 34 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 35 / 71
Développement? Cycle de développement conception du code création d une archive (pas obligatoire) déploiement sur le serveur intégration des éléments développés positionnement dans les répertoires associés définition du "contexte" du serveur modification des fichiers de configuration server.xml Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 36 / 71
Solutions plate-forme Plate-forme de développement J2 EE 5 http://java.sun.com Utilisation d un serveur J2EE Tomcat 5.5 http://tomcat.apache.org/ Sun AppServer installé avec J2EE JBoss http://labs.jboss.com/ Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 37 / 71
Solutions "développement manuel" Outils éditeur de texte service de déploiement service / outil d archive Cycle de développement développement des scripts / pages archivage déploiement modification du contexte (re)démarrage du serveur Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 38 / 71
Développement avec NetBeans Netbeans inclus dans J2EE with tools intégration de la gestion du serveur démarrage / arrêt déploiement modification et mise en place du contexte synchronisation de l application Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 39 / 71
Développement avec Eclipse Eclipse utilisation de plugins spécifiques (nécessité d installation) intégration de la gestion du serveur démarrage / arrêt déploiement modification et mise en place du contexte synchronisation de l application Environnement tout faits Easyeclipse Server Edition http://www.easyeclipse.org Lomboz http://lomboz.objectweb.org/ Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 40 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 41 / 71
Servlets? 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 persistance des données des servlets gestion de l ensemble des informations et flux WEB : formulaires cookies sessions Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 42 / 71
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 olivier.flauzac@univ-reims.fr 43 / 71
Fonctionnement requêtes cycle de vie Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 44 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 45 / 71
Servlets de base : javax.servlet.servlet init code d initialisation (une seule fois) void i n i t ( S e r v l e t C o n f i g c o n f i g ) service gestion du traitement et de la réponse void s e r v i c e ( ServletRequest req, ServletResponse res ) destroy destruction de la servlet (une seule fois) void destroy ( ) getservletconfig récupération de la configuration S e r v l e t C o n f i g g e t S e r v l e t C o n f i g ( ) getservletinfo information sur la servket 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 olivier.flauzac@univ-reims.fr 46 / 71
Servlets HTTP javax.servlet.http.httpservlet (Bonjour.java) gestion des servlet dans le cadre HTTP classe héritante de javax.servlet.servlet ajout des méthodes : gestion des requêtes GET protected void doget ( HttpServletRequest req, HttpServletResponse resp ) gestion des requêtes POST protected void dopost ( HttpServletRequest req, HttpServletResponse resp ) servlet utilisateur : héritage de javax.servlet.http.httpservlet nécessité de masquer la (les) méthode(s) dans les servlets développées gestion des flux associés dans les méthodes Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 47 / 71
Accès à l environnement (Envir.java) ensemble de méthodes permettant d accéder à l environnement d exécution méthodes de javax.servlet.http.httpservletrequest java. lang. S t r i n g getremoteuser ( ) public java. lang. S t r i n g getremoteaddr ( ) public java. lang. S t r i n g getremotehost ( ) public i n t getremoteport ( ) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 48 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 49 / 71
Manipulation des formulaires (formul.html - Form.java) gestion des formulaires et des méthodes (POST et GET) récupération des champs de formulaires (chaînes de caractères) utilisation des méthodes : public java. u t i l. Enumeration getparameternames ( ) public java. lang. S t r i n g getparameter ( java. lang. S t r i n g name) public java. lang. S t r i n g [ ] getparametervalues ( java. lang. S t r i n g name) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 50 / 71
Les cookies (Cookie1.java - Cookie2.java) stockage d informations sur le client informations sous forme de chaînes de caractères utilisation de la classe javax.servlet.http.cookie dépose d un cookie Méthode de la classe HttpServletResponse public void addcookie ( Cookie cookie ) lecture de la liste des cookies accessibles Méthode de la classe HttpServletRequest public Cookie [ ] getcookies ( ) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 51 / 71
Les cookies : l objet Cookie public Cookie ( java. lang. S t r i n g name, java. lang. S t r i n g value ) public java. lang. S t r i n g getname ( ) public i n t getmaxage ( ) public java. lang. S t r i n g getvalue ( ) public void setmaxage ( i n t e x p i r y ) public void setvalue ( java. lang. S t r i n g newvalue ) public void setdomain ( java. lang. S t r i n g p a t t e r n ) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 52 / 71
Gestion des Sessions (startsession.html - Session1.java - Session2.java) gestion d informations sur le serveur suivi de navigation nécessité de transmettre l id de session de page en page (ré-encodage de l URL) java. lang. S t r i n g encodeurl ( java. lang. S t r i n g u r l ) utilisation de javax.servlet.http.httpsession java. lang. Object g e t A t t r i b u t e ( java. lang. S t r i n g name) java. u t i l. Enumeration getattributenames ( ) java. lang. S t r i n g g e t I d ( ) void s e t A t t r i b u t e ( java. lang. S t r i n g name, java. lang. Object value ) void removeattribute ( java. lang. S t r i n g name) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 53 / 71
Persistance (Persist.java) & (persistance2.html - Persistance2.java) différent des sessions exploitation de la résidence des servlet mémorisation de l état au cours d une exécution Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 54 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 55 / 71
Inclusion (Incluant.java - incluse.html Incluse.java) possibilité d inclure dans le résultat : du html le résultat d une autre servlet utilisation d un RequestDispatcher (javax.servlet.servletrequest) public RequestDispatcher getrequestdispatcher ( java. lang. S t r i n g path ) réalisation de l inclusion (javax.servlet.requestdispatcher) void i n c l u d e ( ServletRequest request, ServletResponse response ) Attention ne pas fermer les flux dans la servlet incluse! Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 56 / 71
Délégation (Delegante.java - Delegue.java - err.html - deleg.html) 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 (javax.servlet.servletrequest) public RequestDispatcher getrequestdispatcher ( java. lang. S t r i n g path ) réalisation de l inclusion (javax.servlet.requestdispatcher) public void forward ( ServletRequest request, ServletResponse response ) Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 57 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 58 / 71
JSP? code java intégré au HTML compilé à l exécution en servlet styles de programmation jsp pur style XML Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 59 / 71
Déclarations Style JSP <%! i n t i = 15; %> <%! S t r i n g s = new S t r i n g ( " Hello " ) ; %> Style XML < j s p : d e c l a r a t i o n > i n t i = 15; </ j s p : d e c l a r a t i o n > < j s p : d e c l a r a t i o n > S t r i n g s = new S t r i n g ( " Hello " ) ; </ j s p : d e c l a r a t i o n > Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 60 / 71
Expressions Style JSP <%= i %> <%= s %> Style XML < 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 olivier.flauzac@univ-reims.fr 61 / 71
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 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 Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 62 / 71
Directives include <%@ i n c l u d e a t t r i b u t s %> < j s p : d i r e c t i v e. i n c l u d e a t t r i b u t s / > Attribut file Description nom et chemin du fichier à inclure Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 63 / 71
Script Scriptlets <% code Java %> <ul > <% for ( i n t j =0; j <10; j ++){ out. p r i n t l n ( " < l i > " + j + " </ l i > " ) ; } %> </ ul > Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 64 / 71
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 olivier.flauzac@univ-reims.fr 65 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 66 / 71
Objects implicites request instance de javax.servlet.httpservletrequest response instance de javax.servlet.httpservletresponse out instance de javax.jsp.jspwriter session instance de javax.servlet.http.httpsession Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 67 / 71
Plan 1 Java? 2 Architecture des applications 3 La plate-forme J2EE 4 Exécution - Développement Plate-forme d exécution Plate-forme de développement 5 Servlet Servlets élémentaires Gestion des données Exécutions externes 6 JSP Objets Actions JSP Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 68 / 71
Bean? Définition Classe java respectant les conventions : un constructeur sans argument accès à toutes les propriétés setxxx et getxxx setxxx et isxxx Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 69 / 71
Utilisation d un Bean définition : <jsp :usebean> id nom du bean dans la page (nom de l instance) scope portée class classe du bean type type de la référence (classe, classe parente, interface) accès en écriture : <jsp :setproperty> name nom du bean property nom de la propriété (* possible) value valeur à affecter accès en lecture : <jsp :getproperty> name nom du bean property nom de la propriété Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 70 / 71
Inclusion / Délégation Inclusion < j s p : i n c l u d e page= "URL" > < j s p : param name= " xxx " value= " yyy " / > </ j s p : include > Délégation < j s p : forward page= "URL" > < j s p : param name= " xxx " value= " yyy " / > </ j s p : forward > Olivier Flauzac (URCA) La plate-forme J2EE olivier.flauzac@univ-reims.fr 71 / 71