Introduction
Ces instructions portent sur l'identification d'EJB. Des conseils supplémentaires sur les EJB figurent dans Instructions : Enterprise JavaBean (EJB).
Identification des EJB
Les EJB sont en règle générale utilisés pour implémenter un objet métier côté serveur, qui requiert une certaine prise
en charge en termes de transactions, de sécurité et d'accès à distance, ou qui traite des données partagées (en mettant
à jour des informations de compte, par exemple).
Les EJB sont souvent identifiés lorsque des classes de conception sont identifiées à partir de Produit : Classe d'analyse. Les classes de contrôle constituent des
candidats appropriés pour les beans session, ces derniers étant adaptés pour offrir une logique de contrôle. Les
classes entité constituent des candidats appropriés pour les beans entity, ces derniers étant adaptés aux données
persistantes.
Reportez-vous également aux instructions plus spécifiques suivantes :
Comparaison entre les beans session, les beans entity et
les beans gérés par message.
Le tableau suivant, qui offre une synthèse des instructions mentionnées ci-avant, identifie les rôles des différents
EJB, leur mode d'accès et la nature de leur état.
|
Session
|
Géré par message
|
Entity
|
Rôle
|
Implémente la logique métier spécifique au client.
|
Implémente la logique métier spécifique au traitement de messages.
|
Implémente la logique métier spécifique à l'entité métier.
|
Mode d'accès
|
Client unique, par le biais d'interfaces locales ou distantes.
|
Conteneur, par le biais d'une interface JMS MessageListener. Accès non direct pour les clients.
|
Nombreux clients simultanés, par le biais d'interfaces locales ou distantes.
|
Etat
|
L'état conversationnel transitoire entre le client et le conteneur peut être conservé.
|
Sans état, mais peut gérer des indicateurs vers les ressources en instance.
|
Etat persistant enregistré dans une base de données.
|
Modélisation des EJB
Les EJB sont modélisés comme un ensemble de classes affectées d'un stéréotype. C'est en particulier le cas pour la
classe de bean et toutes les classes d'interface EJB. Les interfaces EJB sont modélisées comme des classes affectées
d'un stéréotype et non comme des classes UML, pour les raisons expliquées dans Instructions : Interfaces pour les applications J2EE.
Les relations entre la classe de bean et les interfaces EJB sont modélisées comme des dépendances entre la classe de
bean et les interfaces et comme des relations de réalisation. La génération d'implémentation Java est généralement
représentée comme une réalisation entre une interface et une classe. Toutefois, les classes EJB n'implémentent pas leur
classes d'interface et une dépendance est alors davantage appropriée. Ceci est illustré dans le diagramme suivant. Pour
plus d'informations sur cet exemple particulier, reportez-vous à Instructions : Conception de sous-systèmes pour les applications J2EE.
Exemple d'EJB et de classes auxiliaires
Le tableau suivant indique les stéréotypes UML pouvant être appliqués à la modélisation d'EJB.
Stéréotype
|
Applicable à
|
Définition
|
<<EJBSessionHomeInterface>>
<<EJBEntityHomeInterface>>
|
Classe
|
Indique une interface home session ou entity, respectivement.
|
<<EJBRemoteInterface>>
|
Classe
|
Indique une interface distante EJB.
|
<<EJBLocalInterface>>
|
Classe
|
Indique une interface locale EJB.
|
|
|
|
<<EJBSession>>
|
Classe
|
Indique une classe de bean session EJB.
|
<<EJBEntity>>
|
Classe
|
Indique une classe de bean entity EJB.
|
<<EJBMessageDriven>>
|
Classe
|
Indique que la classe est un bean géré par message.
|
En règle générale, un EJB est groupé dans un sous-système, avec les classes et les EJB auxquels il est fortement lié.
Ainsi, le concepteur peut fournir une vue spécification pour les EJB non dépendant de leur implémentation et les
regrouper avec d'autres éléments de conception, afin d'offrir un niveau d'abstraction élevé. Pour plus de détails,
reportez-vous à Instructions : Conception de sous-systèmes pour les applications J2EE.
Pour obtenir une liste complète des stéréotypes utilisés pour les générations d'EJB, reportez-vous également à la
spécification UML/EJB Mapping (Mappage UML/EJB) (RSC01).
Modélisez des dépendances avec les sujets ou les files d'attente auxquel(le)s le bean géré par message souscrit. Des
conseils supplémentaires sur la modélisation d'éléments concurrents dans une application J2EE figurent dans Instructions : Description de l'architecture d'exécution pour les applications
J2EE.
L'utilisation de mécanismes, tels que la persistance gérée par conteneur, les transactions, l'autorisation, etc., peut
être modélisée comme des propriétés supplémentaires de la classe de bean ou simplement incluse dans une description
textuelle associée à la classe de bean.
Utilisez des diagrammes de séquence pour étudier les scénarios recourant à ces mécanismes.
Des diagrammes d'interaction (diagrammes de séquence et de collaboration) peuvent être utilisés pour illustrer le
comportement dynamique des EJB et les interactions entre des beans non EJB (y compris les composants Web et les
applications client externes) et des EJB.
Ces diagrammes d'interaction sont en grande partie similaires à ceux décrits dans Tâche :
Conception d'un cas d'utilisation. Les interactions peuvent être indiquées par le bean comme une boîte noire
par interaction uniquement avec les interfaces EJB. Les interactions entre les interfaces EJB et la classe
d'implémentation de beans peuvent également illustrer l'implémentation des beans. Notez que l'interaction
d'intervention avec le conteneur n'est généralement pas indiquée.
Les beans gérés par message consomment des messages qui sont émis de manière asynchrone par d'autres sources. Vous
pouvez choisir d'indiquer un message asynchrone émis directement de l'expéditeur vers le consommateur ou modéliser la
relation plus en détail en modélisant les sujets et les files d'attente.
La figure 2 représente un exemple de diagramme de séquence illustrant une interaction entre une classe client et des
interfaces EJB.
Figure 2: interaction entre une
classe client et des interfaces EJB
La figure 3 représente un diagramme de séquence similaire à celui de la figure 2, mais indique les interactions avec
l'implémentation de bean.
Figure 3 : exemple d'une interaction avec une implémentation d'EJB
Si l'EJB est considéré comme un regroupement entre une classe d'implémentation de bean et des interfaces EJB, il peut
également être modélisé comme un sous-système ou un composant.
Certains concepteurs peuvent également choisir de modéliser un EJB comme une classe et d'affecter un stéréotype aux
opérations afin d'indiquer si elles appartiennent à des interfaces "locales", "distantes" ou "home". La notation est
ainsi plus concise qu'avec les autres alternatives.
|