TP3 AOS sous Java EE - M2 GIL EJB 3.2 et JSP Lina Soualmia 6 octobre 2014 1 Préambule Récupérez le tutoriel (disponible dans le sous répertoire de Glassfish (glassfish/docs/javaeetutorial/doc/JavaEETutorial.pdf ou en ligne à l’adresse : http://docs.oracle.com/javaee/7/ tutorial/doc/javaeetutorial7.pdf) Chapitre 33. Getting Started with Enterprise Beans pp.537 // Chapitre 23. p.459 pour la version 6) 2 Exercice 1 Exemple “Converter” ici adapté pour Eclipse. // à adapter à votre IDE 2.1 Préparation de l’environnement Ce premier exercice repose sur deux parties distinctes : — Des Enterprise Java Beans (EJB) composant une application — Une application Web et des JSP faisant office d’application cliente. 2.1.1 Projet EJB 1. Créez un projet ’EJB Project’ de type 3.2 // ou 3.1 pour la version 6 sous Eclipse que vous nommerez ’GettingStarted’. 2. Vérifiez que ”GlassFish Server Open Source Edition 4 (Java EE 7)” // ou GlassFish Server Open Source Edition 3 (Java EE 6) est sélectionné comme ”Target Runtime”. 3. Le champ Configuration doit être à la valeur Default Configuration for GlassFish Server Open Source Edition 4 (Java EE 7). //Default Configuration for GlassFish Server Open Source Edition 3 (Java EE 6) 2.1.2 Dynamic Web project 1. Créez un ”Dynamic Web Project” que vous nommerez ’GettingStartedWeb’. 2. Vérifiez bien que ”GlassFish Server Open Source Edition 4 (Java EE 7)” est sélectionné comme ”Target Runtime” //GlassFish Server Open Source Edition 3 (Java EE 6) 3. Le Dynamic Web module version doit être 3.x 4. Le champ Configuration doit être à la valeur Default Configuration for GlassFish Server Open Source Edition 4 (Java EE 7) //Default Configuration for GlassFish Server Open Source Edition 3 (Java EE 6) 2.1.3 Java project 1. Créez un ”New” ”Java Project” que vous nommerez GettingStartedStandalone 2. Assurez-vous que le radio bouton du panneau JRE est bien sur ”Use Default JRE” 3. Le projet doit intégrer une bibliothèque spécifique aux applications clientes JEE 7 // JEE6 fournie par GlassFish : cliquez avec le bouton droit sur le projet GettingStartedStandalone 4. Choisissez l’item ”Build path” puis Configure build path... ; 1 5. Ajouter dans ”Libraries” ”Add External JARs...” jar gf-client.jar disponible dans glassfish/modules. 2.2 Premier exemple d’EJB 3.2 (Conversion monétaire entre dollars et yens) Un EJB nécessite toujours au moins : — Une interface (appelée Business Interface, ou Interface Métier) qui permettra la communication entre le serveur et les clients. Cette interface doit décrire les méthodes publiques du bean qui seront invoquables depuis les clients. — Une classe qui codera le bean lui même. Cette classe implantera l’interface métier et sera annotée en fonction du comportement que l’on veut donner au bean. 2.2.1 Interface Métier 1. Dans le menu contextuel de l’EJB project GettingStarted (clic droit), sélectionnez ”New” ”Interface” 2. Donnez comme nom de package com.sun.tutorial.javaee.ejb 3. Nommez l’interface Converter, éditez-la vide puis insérez le code du fichier ’Converter int’ en ligne. 2.2.2 Bean 1. Dans le menu contextuel de l’EJB projet GettingStarted, sélectionnez ”New” ”Class” 2. donnez comme nom de package com.sun.tutorial.javaee.ejb 3. Nommez la classe ConverterBean et insérez le code du fichier ’Converter bean’ en ligne. (Comme pour l’interface précédente, vous trouverez la classe ConverterBean également dans le répertoire ”ejbModule” du projet ”GettingStarted”.) 2.2.3 Client 1. Créez une nouvelle classe ConverterClient dans le package com.sun.tutorial.javaee.ejb pour le projet GettingStartedStandalone 2. Définissez la avec le code contenu dans Converter client en ligne. Initialisez si besoin l’objet InitialContext avec comme propriétés : org.omg.CORBA.ORBInitialHost=localhost org.omg.CORBA.ORBInitialPort=3700 2.3 Première exécution 1. Déployez le projet ”GettingStarted” sur le serveur 2. Lancez le client (”Run As” ”Java Application”) =) L’application se lance et doit afficher sur la console le résultat de la conversion. 2.4 Connexion à un autre serveur Java EE Vous pouvez essayer de vous connecter au serveur d’application d’une autre machine en changeant les valeurs des propriétés org.omg.CORBA.ORBInitialHost et org.omg.CORBA.ORBInitialPort en spécifiant respectivement l’IP ou le DNS et le port d’un autre serveur Java EE. 2.5 Client web 1. A partir du menu contextuel du projet web dynamique GettingStartedWeb créez un fichier jsp (”New” ”JSP”) converter.jsp. 2. Cette JSP doit être créee dans le répertoire WebContent du projet GettingStartedWeb. 3. Editez-la avec le code inclus dans converter jsp.jsp en ligne. 2 4. Reliez l’interface métier Converter à la JSP en recopiant cette interface dans la partie Java du projet (à partir du projet GettingStartedWeb ”New” ”Interface” ) 5. Donnez comme nom de package com.sun.tutorial.javaee.ejb 6. Nommez l’interface Converter 7. Copier le code de l’interface Converter du projet GettingStarted dans l’interface Converter du projet GettingStartedWeb. 8. Recompilez le tout pour que erreurs dans la JSP disparaissent. 9. Déployer les pages sur le serveur (”GettingStartedWeb” ”Run As...” ”Run on server...” GlassFish Server Open Source Edition 4 (Java EE 7) //GlassFish Server Open Source Edition 3 (Java EE 6) 10. Accédez au client web en entrant l’adresse : http://localhost:8080/GettingStartedWeb/converter.jsp =) vous pouvez essayer de vous connecter aux serveurs d’autres machines pour vérifier leur fonctionnement. 3 Exercice 2 : exemple cart (Panier) Suivez le tutoriel d’Oracle pour déployer l’EJB Session “Cart” (pp.541-547) //pp.465-470 V6 (sources : glassfish\docs\javaee-tutorial\examples\ejb) 4 Exercice 3 : web service helloservice Idem qu’en 3 pp.553-556. 5 pour ceux qui ont fini : Exercice 4 : compte bancaire Il s’agit de modéliser une application de gestion d’un compte bancaire. Il sera possible d’accéder à distance à cette application par le biais d’une application cliente. (un module EJB (bean session avec état), un module web et un client). L’application permettra : 1. de déposer de l’argent sur le compte, 2. de retirer de l’argent sur le compte, 3. de donner le solde du compte. Un compte est représenté par la classe Compte (Serializable) qui possède les champs suivants : id (Long), Prenom (String), Nom (String) et Solde (Float). 5.1 5.1.1 Appli java Opérations unitaires Développez une application java autonome dans laquelle vous e↵ectuerez des opérations sur le compte bancaire : 1. dépôt de 1,200 €, 2. retrait de 500 €, 3. dépôt de 650 €, 4. affichage du solde, 5. retrait de 500 €, 6. affichage du solde. 5.1.2 Test de fonctionnalités Dans un second temps construisez une interface cliente (JSP ou servlet) qui permettra de tester les trois fonctionnalités o↵ertes par le serveur ”Compte”. 3