EXA1415 : Annotations JavaEE : @Local, @Stateful Sur une idée de P. Sécheresse sur http://developpez.com (http://tinyurl.com/5gr57j) Diapo 1
Objectif Créer un EJB CalculatriceBean (V1) Contient une opération additionner (a, b) Créer un client CalculatriceWidget (V1) Utilise additionner d un quelconque CalculatriceBean (@Stateless) Créer un EJB CalculatriceFacadeBean (V2) Contient une opération additionner(a) Somme l argument a à la valeur de la mémoire Référence un CalculatriceBean pour utilise son opération additionner (qui somme la mémoire et l argument) Modifier le client (V1) Utilise additionner d une CalculatriceFacadeBean identifié (@Stateful) Diapo 2
Environnement de développement IDE : Netbeans 6.0.x Serveur d application : Glassfish V2.x EJB Container Naming Service Diapo 3
Organisation du développement Deux sous-projets EJB : package demo.ejb3.calculatrice Type Enterprise / EJB Module Client : package demo.calculatrice.widget Type Java / Java Application Deux versions V1 : client utilise EJB calculatrice (sans mémoire) V2 : client utilise EJB calculatrice à mémoire Les fragments de codes ainsi qu une description pas à pas sur peuvent être récupérés : http://tinyurl.com/3xye5a http://tinyurl.com/9h5hbl Diapo 4
Rappels des annotations Annotations pour interface (de publication) @Remote, @Local Annotations pour mise en œuvre (implementation EJB) @Stateful, @Stateless Injection de dépendance par annuaire (service lookup) @EJB Diapo 5
Création de la V1 Diapo 6
Pkg demo.ejb3.calculatrice: Création du projet File / New Project Categories : Enterprise ; Projects : EJB Module Bouton Next > Project name : Calculatrice Bouton Finish Diapo 7
EJB : création Diapo 8
EJB : fichiers créés Diapo 9
EJB : ajout d une méthode Diapo 10
EJB : Déploiement Diapo 11
Personnalisation du nom d un EJB (1)./src/conf/sun-ejb-jar.xml Il s agit en fait du nom de l interface jndi-name : «AsiCalc» Annuaire (JNDI) ejb-name : «CalculatriceBean» Serveur d applications Client EJB id2 EJB id7 EJB id4 Diapo 12
Personnalisation dans Netbeans (2) Diapo 13
EJB : Test Tools / Create JUnit Tests Diapo 14
V1 - Client : création Créer un projet Java / Java Application Ajouter les librairies qui permettent à une application de communiquer avec un annuaire et de récupérer des clones (stubs) des instances issues du serveur d application appserv-rt javaee.jar Voir code source sur http://tinyurl.com/5gr57j Diapo 15
Création de la V2 Diapo 16
Développement V2 : @Stateful, @Local Deux cas de figures EJB consulté par un autre EJB exécuté dans le même serveur d application @Local EJB «Mem» utilise EJB «AsiCalc» EJB consulté depuis un client externe (éventuellement distant) Client «CalculatriceWidget» utilise EJB «Mem» jndi-name : «AsiCalc» Annuaire (JNDI) Interface @Remote IIOP Client Serveur d applications EJB Mem EJB id7 EJB AsiCalc Interface @Local Diapo 17
V2 : CalculatriceFacade (@EJB, @Stateful L annotation @Stateful indique à l EJB Container qu au minimum une réinitialisation est nécessaire avant d attribuer une instance de cet EJB à un autre client. L annotation @EJB implique une injection de dépendance sur l attribut CalculatriceFacade.calculatriceBean d une instance d une classe mettant en œuvre (implementing) l interface demandée, CalculatriceLocal. Diapo 18
V2 Ajout de l EJB CalculatriceFacade Diapo 19
V2 : Client CalculatriceWidget CalculatriceWidget utilise CalculatriceFacadeRemote Injection de dépendance par appel explicite à l annuaire (comme en V1) Diapo 20
Configuration de la surveillance (monitoring) Diapo 21
Surveillance (monitoring) Diapo 22
Avec Eclipse Callisto et un serveur d appli. central Plus d info sur http://tinyurl.com/ko6am8 Chaque équipe crée un package à son nom Package martin.charles.ejb3 Chaque étudiant fait un export sous son nom Export charlesmartin.jar Diapo 23
Simuler l assistance des extensions (plugin) Créer des POJO Ajouter un descripteur Créer un répertoire META-INF Créer un fichier sun-ejb-jar.xml Exporter de Eclipse et importer dans Glassfish Diapo 24
Export depuis Eclipse Diapo 25
Import dans Glassfish Diapo 26