EJB 3:
Message Driven Beans



                       1
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
Présentation



               3
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
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
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
MDB pour les messages texte




                              7
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
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
classe listener




                  10
SimpleQ-service.xml (JBoss-Specific!)




                                        11
Les clients qui s'attendent
à des BMD Messages textes




                               12
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
Remote Desktop Client




                        14
Remote Desktop Client (Suite)




                                15
Remote Client: jndi.properties




                                 16
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
Standalone Client à distance: Résultats (JBoss server.log)




                                                    18
Récapitulation



                 19
Résumé
serveur
  Implementer MessageListener
    Remplacer onMessage, casté l’ argument à TextMessage, extrait message String avec
     getText
    Étiquette avec@MessageDriven
    Habituellement définissent activationConfig à l'annotation
  Mettez YourQueueName-service.xml dans src
Client
  classe Java
    Obtenez InitialContext, rechercher ConnectionFactory & Queue
    Faire Connection, Session et MessageProducer
    Utilisez MessageProducer d'envoyer Messages textes
  Mettez jndi.properties dans src
                                                                              20
Des questions?



                 21

Ejb3 3-message-driven-beans fr

  • 1.
  • 2.
    Agenda Distinguer un message-drivenbeans (BMD) à partir de session de beans Types de messages Faire un MDB pour recevoir Messages textes Faire un client d'envoyer Messages textes 2
  • 3.
  • 4.
    Session Beans vs.Message-DrivenBeans (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 Ilya 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
  • 7.
    MDB pour lesmessages texte 7
  • 8.
    approche Faire nouvel EJBprojet 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 desprojets  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
  • 10.
  • 11.
  • 12.
    Les clients quis'attendent à des BMD Messages textes 12
  • 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
  • 14.
  • 15.
  • 16.
  • 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
  • 18.
    Standalone Client àdistance: Résultats (JBoss server.log) 18
  • 19.
  • 20.
    Résumé serveur  ImplementerMessageListener Remplacer onMessage, casté l’ argument à TextMessage, extrait message String avec getText Étiquette avec@MessageDriven Habituellement définissent activationConfig à l'annotation  Mettez YourQueueName-service.xml dans src Client  classe Java Obtenez InitialContext, rechercher ConnectionFactory & Queue Faire Connection, Session et MessageProducer Utilisez MessageProducer d'envoyer Messages textes  Mettez jndi.properties dans src 20
  • 21.