Un module EJB (Enterprise JavaBeans) permet d'assembler un ou plusieurs beans enterprise au sein d'une unité déployable unique. Un module EJB est stocké dans un fichier d'archive Java™ standard (fichier JAR).
Un module EJB comprend les éléments suivants :
Vous pouvez déployer un module EJB en tant qu'application autonome ou bien le combiner avec d'autres modules EJB, ou
avec des modules Web afin de créer une application Java. Un
module EJB est installé et exécuté dans un conteneur de beans enterprise.
Si vous désirez intégrer un descripteur de déploiement dans un module EJB 3.x, plusieurs possibilités s'offrent à
vous. Vous pouvez intégrer dans un module EJB 3.x des beans de session et/ou de message de niveau EJB 3.x
exclusif, de niveau 2.1 exclusif, ou encore une combinaison des deux. Le descripteur de déploiement XML doit être de la
version 3.x. Les beans d'entité 2.1 doivent obligatoirement être intégrés dans des modules avec descripteurs de déploiement 2.1.
Les modules EJB contenant des beans EJB 3.x doivent être au niveau de spécification EJB 3.x lorsqu'ils s'exécutent sur
le produit. Pour configurer le module EJB pour prise en charge de beans EJB 3.x, vous devez définir le descripteur de
déploiement ejb-jar.xml au niveau 3.0 ou 3.1, ou vous assurer que le module ne contient pas de descripteur de déploiement
ejb-jar.xml. Si le module est du niveau EJB 2.1 ou antérieur, aucune fonction EJB 3.x, y compris l'examen
d'annotations ou l'injection de ressources, n'est effectuée à l'exécution.
Pour plus d'informations sur l'empaquetage et le déploiement de beans EJB 3.x, consultez
la rubrique de présentation correspondante.
Vues client locales
La spécification
EJB requiert uniquement la prise en charge des vues client locales pour les EJB de la même
application. Cela inclut les interfaces métier locales, les interfaces home locales et la vue
no-interface. Le produit
fournit l'accès aux vues client locales des EJB se trouvant dans une application séparée
avec certaines restrictions :
- L'interface locale et tous les types parameter, return et exception utilisés
par l'interface locale doivent être visibles par le chargeur de classe pour l'application
ayant effectué l'appel et l'application EJB cible. Vous pouvez garantir cela en utilisant
une bibliothèque partagée associée au chargeur de classe d'un serveur ou en utilisant
une bibliothèque partagée isolée associée aux deux applications. Pour plus d'informations, consultez la rubrique relative à la création
de bibliothèques partagées.
- Lorsque l'application EJB cible est arrêtée, toute référence en cache à l'EJB
doit être actualisée. Vous pouvez effectuer l'une des actions suivantes :
- Redémarrez l'application appelante. La solution la plus simple consiste
à redémarrer l'application ayant effectué l'appel lors du redémarrage d'une application
EJB simple dont elle dépend.
- Obtenez une nouvelle référence à partir de JNDI. Par défaut, les recherches JNDI
de l'espace de nom Java sont mises en cache et ce dernier soit être désactivé ou vidé pour
obtenir une nouvelle référence. Pour plus d'informations, consultez la rubrique
relative au développement d'applications qui utilisent JNDI.
Les appels de méthode EJB
émettent com.ibm.websphere.ejbcontainer.EJBStoppedException une fois
l'application EJB cible arrêtée. Si vous avez mis en cache la référence
d'EJB dans une variable d'instance en utilisant l'injection @EJB ou la recherche
JNDI, vous pouvez alors intercepter cette exception et actualiser la référence d'EJB
en effectuant une recherche hors du cache.
- Activez des proxy EJB locaux indirects pour l'application d'EJB cible.
Cela entraîne la régénération automatique du proxy EJB local lors du redémarrage de l'application. L'activation de proxy locaux indirects donne lieu à une surcharge supplémentaire pour chaque appel de méthode EJB.
Vous pouvez activer des proxy locaux indirects à l'aide, par exemple, d'une console d'administration. Cliquez sur . Indiquez le nom com.ibm.websphere.ejbcontainer.indirectLocalProxies et la valeur true pour la propriété personnalisée, puis appliquez et enregistrez les applications.