|
EJB 2 - Les Entreprise Java Bean (JavaBeans)
3.5.Qu’est ce qu’un
Message Driven Bean
Un message-driven bean est un bean qui permet à des
applications de J2EE de traiter des messages asynchrones. Il agit
normalement en tant que listener de message de JMS, qui est
semblable à un listener d'événement sauf qu'il
reçoit des messages de type JMS au lieu d’événements.
Les messages peuvent être envoyés par n'importe quel
composant J2EE (application cliente, un autre bean, ou une
application web) ou par une application JMS ou un système qui
n'utilise pas du tout la technologie de J2EE. Les message-driven
beans peuvent traiter des messages JMS et d'autres genres de
messages.
3.5.1.Différences avec les
Session Beans et Entity Beans
La différence la plus évidente entre les message-driven
beans et les sessions et les entity beans est que les clients
n'accèdent pas aux message-driven beans par des interfaces.
Les interfaces sont décrites dans la section définissant
l'accès client avec les interfaces (chapitre ). À la
différence d'un session ou d'un entity bean, un message-driven
bean a uniquement une classe de bean.
À plusieurs égards, un message-driven bean ressemble à
un stateless session bean.
-
Les instances des message-driven bean ne maintiennent aucune donnée
ou état conversationnel pour un client spécifique.
-
Toutes les instances d'un message-driven bean sont équivalentes,
permettant au conteneur d’EJB d'assigner un message à
n'importe quelle instance du message-driven bean. Le conteneur peut
mettre ces instances dans un pool pour permettre aux flux de
messages d'être traités en parallèle.
-
Un unique message-driven bean peut traiter les messages de clients
multiples.
Les variables d'instance de l'instance du message-driven bean peuvent
contenir un certain état durant la manipulation du message du
client. Par exemple, une connexion à JMS, à une base de
données, ou d'une référence d'objet à un
EJB.
Les composants clients ne localisent pas les message-driven beans et
n'appellent pas directement leurs méthodes. Au lieu de cela,
un client accède au message-driven bean via JMS en envoyant
des messages à des destinations.
Les message-driven beans ont les caractéristiques suivantes :
-
Ils s'exécutent à la réception d'un message
simple de client.
-
Sont appelés de manières asynchrones.
-
Ils sont relativement de courte durée.
-
Ils ne représentent pas des données directement
partagées dans la base de données, mais ils peuvent
accéder et mettre à jour à ces données.
-
Ils peuvent être avertis des transactions.
-
Ils n’ont pas état.
Quand un message arrive, le conteneur appelle la méthode
onMessage() du message-driven bean pour traiter le
message. La méthode onMessage() caste
normalement le message vers l’un des cinq types de messages JMS
et le manipule en accord avec la logique métier de
l’application. La méthode onMessage() peut
appeler d’autres méthodes ou elle peut appeler un
session bean ou un entity bean pour traiter l’information dans
le message ou la sauvegarder dans une base de données.
Un message peut être fourni à un message-driven bean
dans un contexte de transaction, de sorte que toutes les opérations
à l’intérieur de la méthode onMessage()
fassent partie d'une seule transaction. Si le traitement du message
est « rolled back » (annulé), le message
sera de nouveau livré. Pour plus d'information, voir le
chapitre .
3.5.2.Quand utiliser les
Message-Driven Beans
Les session beans et les entity beans vous permettent d'envoyer des
messages de type JMS et de les recevoir de manière synchrone.
Pour éviter la surcharge des ressources du serveur, vous
préférez peut-être ne pas utiliser la réception
synchrone bloquante côté serveur. Pour recevoir des
messages asynchrones, utilisez un message-driven bean.
|
|
 |