Les Enterprise Java Beans 3.0
Transcription
Les Enterprise Java Beans 3.0
Les Enterprise Java Beans 3.0 Introduction Les chalenges du développement d’applications pour l’entreprise • Le développement d’une application pour l’entreprise pose des problèmes : • faire face à la diversité des technologies et des modèles de programmation ; • développer des applications pour différents types de clients ; • nécessité d’avoir des mécanismes efficaces de gestions des ressources (base de données, …) et des services (transaction, … ) ; • faire face à une recrudescence d’utilisateurs : • gérer le balancement de charges ; • pouvoir changer de serveur ; • interagir avec un système existant ; • maintenir la sécurité en intégrant des systèmes disparates ; • ... Benoît Charroux - Introduction - Juillet 07 - 3 Le modèle de Java pour l’entreprise La plate-forme Java Enterprise Edition 5 : un serveur d’applications client Enterprise Bean Conteneur EJB Systèmes d’informations de l’entreprise Intranet / Extranet client Servlets, JSP, HTML, XML Conteneur WEB Tiers client Tiers du milieur (n-tiers) : serveur d’applications Benoît Charroux - Introduction - Juillet 07 - 5 Tiers du système de l’entreprise Les serveurs d’applications Enterprise Java Beans • Un serveur d’application est une plate-forme d’exécution pour composants logiciels ; • un composant EJB est un élément logiciel réutilisable qui n'implémente que la partie métier d'une application ; • le serveur d'EJB offre des services qui ne sont plus à la charge du développeur : • la concurrence d'accès ; • les transactions ; • la persistance ; • les objets distribués ; • le nommage ; • la sécurité. client Réseau Serveur d’applications Base de données Benoît Charroux - Introduction - Juillet 07 - 6 JEE coté client navigateur client Servlets, JSP, HTML, XML Système d’information de l’entreprise Conteneur WEB serveur Pour faire interagir une application JEE avec un client : • Servlets : petits serveurs autonomes utilisés principalement pour générer dynamiquement des informations pour le WEB ; • Java Server Pages : page WEB combinant HTML (ou XML) et Java Beans. Benoît Charroux - Introduction - Juillet 07 - 7 JEE coté entreprise Enterprise Bean client Conteneur EJB Systèmes d’informations de l’entreprise Pour faire interagir une application JEE avec un système existant : • Java Persistence API ; • Java Transaction API (interface standard pour gérer des transactions) / Java Transaction Service (implémentation) ; • Java Naming and Directory Interface pour accéder à un service de nommage (LDAP, …) ; • Java Message Service pour interagir avec des systèmes orientés messages ; • Java Mail. Benoît Charroux - Introduction - Juillet 07 - 8 L’architecture des Enterprise Java Beans L’architecture des Enterprise Beans client Enterprise Bean Conteneur EJB Systèmes d’informations de l’entreprise Intranet / Extranet client Servlets, JSP, HTML, XML Conteneur WEB Tiers client Tiers du milieur (n-tiers) : serveur d’applications Benoît Charroux - Introduction - Juillet 07 - 10 Tiers du système de l’entreprise Entity / Session bean / Message-Driven bean Les types de Beans • Session Bean : réalise une tâche pour un client (le seul type d'Enterprise Bean à pouvoir implémenter un service WEB) ; • Message-Driven Bean : est à l'écoute des messages tels ceux fournis par la Java Message Service API ; • Entity : objet élément de la logique métier léger et persistant. View Logique applicative Model (logique métier) Session bean Entity Services : - persistance ; - transactions ; ... Benoît Charroux - Introduction - Juillet 07 - 12 Les Entity • Un entity est un objet métier léger et persistant ; • Exemple de la gestion d’une médiathèque : Adhérent, Œuvre, Exemplaire Nom Prénom Adresse Durand Paul 15 impasse nul part Dupond Albert 2 allée Tataouine Persistance Base de données Benoît Charroux - Introduction - Juillet 07 - 13 Les Session Beans • Les session beans • ne sont pas persistant ; • Un statefull session bean : • représente un flot de contrôle en faisant interagir des beans pour accomplir une tâche particulière ; • n’a qu’un seul client ; • Un stateless session bean : • permet d’implémenter des services particuliers (par exemple obtenir une liste de données par accès direct à une base de données) ; • est un ensemble de méthodes qui utilisent leurs seuls paramètres pour produire un résultat (ils peuvent aussi utiliser leurs SessionContexts) ; • peut être utilisé par plusieurs clients => à utiliser pour les applications nécessitant de nombreux clients ; • est plus performant qu’un bean avec état car il n’est pas sérialisé dans une base de données. Benoît Charroux - Introduction - Juillet 07 - 14 Des interfaces distantes pour accéder à un session bean • Un client n’a accès qu’aux méthodes définies dans une interface ; • l’implémentation, les accès à la base de données, etc, sont masqués. stub interface client interface Bean Conteneur EJB Serveur EJB Exemple d’une interface : @Remote public interface Mediatheque{ public List<String> String getListAdherents(); public boolean emprunter( String nomAdherent, String titreOeuvre ); } Benoît Charroux - Introduction - Juillet 07 - 15 Des interfaces locales pour accéder à un session bean • Accéder à un composant distant via une interface remote a un coût (on passe par un stub et un squelette ) ; • pourquoi avoir un tel coût si les clients sont locaux (dans la même machine virtuelle que le serveur) ? • Exemple de deux beans qui communiquent : Bean @Local public interface Mediatheque{ Local interface public List<String> String getListAdherents(); ... } Bean Conteneur EJB Serveur EJB Benoît Charroux - Introduction - Juillet 07 - 16 Les Message-Driven Beans • Intérêt des Message-Driven beans : • comment un bean peut-il être activé quand un événement se produit ? • mauvaise solution : mettre en attente de l'événement un session bean => problème : consommation de ressources ; • bonne solution : utiliser un message-driven bean. • Principe des message-driven beans : • les événements émis (appelés des messages) sont conservés dans un MOM (Middleware Orienté Message ou middleware asynchrone) ; • l'émetteur est débloqué dès que le message est reçu par le MOM ; • le MOM se charge d'envoyer le message au destinaire (le message-driven bean) ; Benoît Charroux - Introduction - Juillet 07 - 17 Les Message-Driven Beans • L'émetteur d'un message peut-être : • n'importe quel composant JEE (un enterprise bean ou un composant WEB) ; • une application cliente JEE ; • une application cliente non JEE. • Les messages sont du type : • Java Messaging Services ; • d'un autre types (binaire, ...). Benoît Charroux - Introduction - Juillet 07 - 18 Les services Les services • Les serveurs EJB assurent les 6 principaux services suivants : • la concurrence ; • les transactions ; • la persistance ; • les objets distribués ; • le nommage ; • la sécurité. Benoît Charroux - Introduction - Juillet 07 - 20 Paramètres des méthodes d'un bean Les paramètres des méthodes • Isolation : • quand un client distant transmet des paramètres à un bean => le bean reçoit des copies de ces paramètres ; • quand un client local transmet des paramètres à un bean => passage par référence => client et bean manipulent les mêmes objets via des références. • Granularité des paramètres : • comme les appels de méthodes distantes sont plus long que les appels locaux, il faut transmettre plus d'informations à chaque appel => les objets transmis en paramètre ne doivent pas avoir une granularité trop fine. Benoît Charroux - Introduction - Juillet 07 - 22 Conventions de nomage Les noms de composants • Soit X le nom que l'on souhaite donner à un composant : • X doit être le nom de l'interface ; • Xbean doit être le nom de l'Enterprise Bean (de l'implémentation de l'interface X). Benoît Charroux - Introduction - Juillet 07 - 24 Le cycle de vie des session beans Le cycle de vie des statefull session beans Inexistant 1. appel à remove ou time out Appel des méthodes de post-construction Time out 2. Appel des méthodes de prédestruction Appel des méthodes de pré-désactivation Prêt Passif Appel des méthodes de post-activation Benoît Charroux - Introduction - Juillet 07 - 26 Le cycle de vie des stateless session beans Inexistant Appel des méthodes de post-construction Appel des méthodes de pré-destruction Prêt • Un session bean n'est jamais désactivé car son état n'est pas conservé entre deux appels de méthode. Benoît Charroux - Introduction - Juillet 07 - 27 Les callback methods @Statefull public class MonComposantBean implements MonComposant{ ... contenu; @PostContruct // ou @PostDestroy ou @PostActivate ou @PrePassivate public void ...(){ } @Remove public voir remove(){ contenu = null; } } Benoît Charroux - Introduction - Juillet 07 - 28