Les EJB : introduction
Généralités
La plate-forme Java EE est une technologie développée par Sun MicroSystem pour favoriser le développement d'applications multi-tier (multi-niveau); cette plate-forme s'appuie sur le langage Java et la machine virtuelle JVM (Java Virtual Machine) pour arriver à un standard rassemblant plusieurs APIs et Conteneurs Java.
Dans un serveur d'application Java EE les conteneurs facilitent la communication entre les composants et les applications clientes du serveur. La communication entre les composants est assurée par des interfaces et des classes Java; les conteneurs encadrent et sécurisent les échanges d'informations et de données lors de l'exécution des programmes. Les applications clientes n'accèdent pas directement aux composants EJBs (Entreprise Java Bean) mais elles sollicitent les conteneurs comme intermédiaire.
Conteneur
Un Conteneur est un environnement d'exécution pour des composants contenus dans le Serveur; le conteneur fournit des services aux composants; en général le conteneur se trouve dans un serveur d'application et ce dernier fournit l'environnement nécessaire au bon fonctionnement du conteneur.
Serveur d'applications
Un serveur d'application est un serveur capable d'accueillir tout application d'entreprise (business application) et d'offrir des services poussés pour assurer la sécurité, la persistance des données, ou encore la communication entre les différents composants qu'il héberge.
Dans une architecture Java EE le conteneur d'EJBs charge tous les composants à la demande et invoque les opérations citées ci-dessus, en appliquant les règles de sécurité et en contrôlant les transactions. Le conteneur d'EJB fournit automatiquement toutes les fonctionnalités nécessaires pour la réalisation d'applications d'entreprise.
Application distribuée
Une application distribuée est une application découpée en plusieurs unités. Chaque unité peut être placée sur une machine, s'exécuter sur un système différent et être écrite dans un langage différent.
Les EJBs sont des composants Java qui implémentent la logique métier de l'application, ce qui permet à cette logique d'être décomposée en éléments indépendants de la partie de l'application qui les utilise.
Modèle multi-tiers
le modèle multi-tiers et plus particulièrement le modèle trois-tiers, est largement utilisé pour développer des applications distribuées. Ce modèle permet d'avoir plusieurs applications différentes avec un même logique métier, de mettre en place facilement des applications distribuées dans un environnement hétérogène.
Les EJBs
Les EJBs sont des composants de Java EE situés côté Serveur et gérés par un conteneur (EJB container); ce dernier prend en charge un certain nombre de services et de tâches et facilite ainsi le travail des développeurs. Il existe trois types d'EJBs; les java beans session (session beans), les EJB Entities et les beans orientés message (Message Driven Beans - MDB).
Un java bean session est soit sans état et on parle alors de java bean stateless, soit avec état et c'est un java bean stateful. Depuis la spécification des EJB 3.1 il est possible de définir un EJB session qui a les caractéristiques du design pattern singleton: le java bean Singleton; le conteneur garantit qu'une seule instance de l' EJB session singleton sera utilisable et partagée dans le conteneur. Ce nouveau type d'EJB ressemble à un EJB Session sans état mais il ne peut avoir qu'une seule instance dans un conteneur pour une application donnée.
Les EJB Session
Les EJBs session servent à développer la logique métier d'une application; par exemple, les EJBs session stateless peuvent être utilisés pour traiter les requêtes de plusieurs clients et les EJBs session stateful pour traiter plusieurs échanges de données et d'informations avec un client. Les EJBs stateful, comme le nom l'indique, conservent des données entre deux échanges avec un client. Les clients qui appellent un EJB ne communiquent pas directement avec celui-ci. Les accès aux EJBs par un client se fait obligatoirement via un conteneur.
EJB Entity (Objets d'entité)
Un EJB entité est utilisé pour représenter des entités dans une base de données. La dernière version de la spécification a rendu ce type d'Enterprise JavaBeans facultatif, de sorte qu'ils ne peuvent pas être pris en charge dans tous les conteneurs; Les objets d'entité seront supprimés de la spécification dans Java EE 8.
Message-driven beans (MDB)
les MDB sont des EJB qui peuvent traiter les messages envoyés par n'importe quel producteur JMS. (on en parle dans un autre article).
Il existe de nombreux serveurs d'applications commerciaux gérant les conteneurs d'EJBs (BEA Weblogic, IBM Webpshere, Sun IPlanet, Macromedia JRun, Borland AppServer, etc ...) et des serveurs d'application open source prenant en charge EJB (les plus avancés sont JBoss, Glassfish et Jonas).
Cycle de vie d'une EJB 3
Lorsqu'un EJB est sollicité, il passe par différents états; ces états constituent ce qu'on appelle le cycle de vie de l'EJB. Chaque type d'EJB a son propre cycle de vie. Pendant le temps où l'EJB est dans "état prêt", le conteneur d'EJB peut décider de le rendre passif en le déplaçant de la mémoire active vers une partie secondaire de stockage (le conteneur utilise pour ça un algorithme appelé "least-recently-used" qui choisit les EJBs à rendre passive). Le conteneur rend l'EJB active dès qu'une application le sollicite. A la fin du cycle de vie, le client invoque la méthode remove() et le conteneur appelle la méthode ejbRemove(). L'instance de l'EJB est transmis au système de "garbage collection" qui se débarrasse des instances de classes devenues inutiles en libérant la mémoire. Le code du client en général contrôle deux états du cycle de vie de l'EJB à savoir la création et la destruction de l'EJB et tous les autres états sont gérés par le conteneur d'EJB.
(à suivre)..