2. Agenda
Distinguer un message-driven beans (BMD) à partir de session de beans
Types de messages
Faire un MDB pour recevoir Messages textes
Faire un client d'envoyer Messages textes
2
4. Session Beans vs.Message-Driven Beans (MDB)
Session de beans Message-driven Beans
-Appelez directement -Appelez directement
•Le client accède à spécifiques (via •Le client met un message dans la file.
l’interface) Queue décide plus tard sur lequel
-invoqué manière synchrone bean reçoit le message.
•Le client attend jusqu'à bean -invoqué manière synchrone
la réponse se termine •Pas d'attente pour le bean à traiter la
-Peut retourner des valeurs au client demande. Les messages pas toujours envoyé.
•Client peut recevoir le valeur -Ne pas retourner les valeurs pour le client («feu
de retour à partir d'appel de méthode et oublier »)
-- Basé sur les interfaces •Le client peut envoyer des données, mais ne
• EJB est l'interface en plus classe peut pas obtenir la valeur de réponse
concrète -Non basée sur des interfaces
• Le client fait référence à l'interface • EJB peut être classe concrète uniquement
• Le client ne fait pas référence à la classe de
aucune façon (seulement pour la file d'attente)
4
5. approche générale
serveur
Classe implémente MessageListener
Remplace onMessage
Tagged avec @ MessageDriven
Habituellement avec type de file activationConfig donnant le nom &
Blah-service.xml
Donne spécifiques au serveur définition de file de messages
Client
classe principale
Trouve ConnectionFactory et file d'attente dans InitialContext
Crée session et MessageProducer
Envoie à plusieurs reprises TextMessage, ObjectMessage, ou d'autres type
de message
jndi.properties
Même que dans la section sur les sessions de beans 5
6. Types de messages
Il ya cinq types de messages prédéfinis
TextMessage
Pour envoyer Strings
ObjectMessage
Pour envoyer des objets sérialisables
MapMessage
Pour envoyer des ensembles de noms (Cordes) et les valeurs (primitives).
ByteMessage
• Pour envoyer des messages binaires (flux d'octets)
StreamMessage
• Pour envoyer une série de primitives Java
Serveur jette arg onMessage à ce type
Server peut faire l’instance si le même MDB recevra plus d'un type
de message
6
8. approche
Faire nouvel EJB projet
Implementer MessageListener
Remplacer onMessage, casté l’ argument à TextMessage, extrait message String
avec getText
Étiquette avec@MessageDriven
Habituellement définissent activationConfig à l'annotation, mais peut être
défini par programmation
destinationType est généralement javax.jms.Queue
destination est la file d'attente / YourQueueName
Mettez YourQueueName-service.xml dans src
Contient spécifique au serveur d'informations (voir la diapositive à venir)
Déployer application serveur
cliquez R- sur serveur, Ajouter / Supprimer des projets, de démarrer le
serveur 8
9. projet EJB
faire des projets
Pick a name
JBoss en tant que cible d'exécution
Déploiement sur serveur différent nécessite tard changer de
serveur spécifiqueBlah-service.xml
Facultatif: Ajouter à une oreille
Si vous faite Projet web Dynamique plus tard qui veut utiliser @ EJB,
vous pouvez l'ajouter à la même oreille
Déploiement de projet
R-cliquez sur JBoss, Ajouter et supprimer des projets, choisissez
Projet, Ajouter,Terminer
R-click on JBoss, Start
9
13. approche
Faire nouveau projet
Pour standalone / bureau client
Pour les applications Web qui invoquent BMD
Envoyer des messages
Obtenez InitialContext, rechercher ConnectionFactory & Queue
Faire Connection, Session et MessageProducer
Utilisez MessageProducer d'envoyer Messages textes
Mettez jndi.properties dans src
Comme dans la section sur les session de beans
Déployer application serveur
cliquez R-sur serveur, Ajouter / Supprimer des projets, de démarrer le
serveur
Pour les projets Web, mais pas pour le bureau des projets Java 13
17. Standalone Client à distance: Déploiement
Messages (projet EJB)
Déployé à JBoss.
SimpleQ-service.xml a JBoss spécifiques d'info
Messages-client (Dynamic Web Project)
Pas encore déployé sur n'importe quel serveur.
jndi.properties a JBoss spécifiques d'info
17