Enterprise JavaBeans : composants Java d'entreprise.

Besoin

Fournir un modèle de composants Java pouvant être :

Analyse

Les composants EJB peuvent représenter des :

Conception

Développement

Chaque composant EJB est mis en œuvre par un ensemble d'objets :

Les composants trouvent les éléments externes (autres EJB, sources de données, files de messages, etc.) auxquels ils veulent accéder via un annuaire compatible JNDI.

Assemblage

Une fois définis, les composants EJB peuvent être assemblés en un module EJB. On résoud alors, entre composants de ce module, les dépendances :

Déploiement

Une fois assemblé, un module EJB peut être déployé dans un conteneur EJB. On résoud alors, pour les composants de ce module, les dépendances avec l'environnement de déploiement, telles que les dépendances de :

Implémentation

L'API des EJB est définie dans le package javax.ejb.

Un EJB est développé à partir de :

La recherche des éléments externes doit s'effectuer en interrogeant le contexte de nommage de l'environnement du composant :

Au moment du déploiement, les noms recherchés dans cet environnement local seront associés à des noms absolus d'objets déployés dans le serveur (tout ou partie de cette résolution de nom peut également s'effectuer lors de l'assemblage, s'il s'agit de désigner d'autres EJB locaux au module de l'EJB appelant).

Exemples

Un exemple de classe d'instance d'EJB Entité 2.0 est :

import <strong>javax.ejb</strong>.*;<br> <br> <strong>public abstract</strong> class SkillTree implements <strong>EntityBean</strong> {<br> <span class="codeComment"> /** <br> * Constructeur par défaut, toujours vide <br> */</span><br> public SkillTree() {}<br> <br> <strong>public </strong>SkillKey <strong>ejbCreate </strong>(Skill someRootSkill) throws <strong>CreateException </strong>{ <br> setRoot (someRootSkill);<br> return null; <span class="codeComment">// En CMP la clé est déduite</span><br>} <br> <br> <span class="codeComment"> /**<br> * Accesseurs CMP<br> */ </span><br> <strong>public abstract</strong> Object getRoot();<br><strong>public abstract</strong> void setRoot (Object);<br> <br> public void <strong>ejbStore</strong>() {<br> <span class="codeComment"> // Rien à faire ici<br> </span> }

public void <strong>ejbLoad</strong>() {<br> <span class="codeComment"> // Rien à faire ici<br> </span> }

public void <strong>ejbRemove</strong>() {<br> <span class="codeComment"> // Rien à faire ici<br> </span> }

public void <strong>ejbActivate</strong>() {<br> <span class="codeComment"> // Rien à faire ici<br> </span> }

public void <strong>ejbPassivate</strong>() {<br> <span class="codeComment"> // Rien à faire ici<br> </span> }

public void <strong>setEntityContext</strong> (EntityContext someContext) { <br> ejbContext = someContext; <br> } <br> <br> public void <strong>unsetEntityContext</strong>() { <br> } <br> <br> private <strong>EntityContext </strong>ejbContext;<br>}

Notes

Limitations

On peut reprocher aux EJB :

On ne peut pas reprocher aux EJB < 3 :

Voir