Déploiement de beans gérés par message pour la connexion au serveur de messagerie imbriquée

Utilisez les beans gérés par message pour vous connecter au serveur de messagerie imbriquée

Pourquoi et quand exécuter cette tâche

Un bean géré par message peut être configuré sur le serveur Liberty dans les deux cas suivants :
  • Lorsque le bean géré par message et le moteur de messagerie se trouvent sur le même serveur Liberty
  • Lorsque le bean géré par message se connecte à un moteur de messagerie distant qui s'exécute sur un serveur Liberty différent.
    Le diagramme illustre les deux scénarios de configuration de bean géré par message. Dans le premier scénario, le moteur de messagerie et le bean géré par message se trouvent sur le même serveur Liberty. Dans le deuxième scénario, le bean géré par message se connecte à un moteur de messagerie qui se trouve sur un serveur différent.

Procédure

  1. Configurez la fonction de bean géré par message :

    Activez la prise en charge des beans gérés par message sur le serveur Liberty en configurant les fonctions jmsMdb-3.1 et wasJmsClient-2.0 dans le fichier server.xml. Si vous voulez effectuer une recherche JNDI, vous devez aussi ajouter le dispositif jndi-1.0 en plus des deux autres.

    <featureManager>
         <feature>jmsMdb-3.1</feature>
         <feature>wasJmsClient-2.0</feature>
         <feature>jndi-1.0</feature>
    </featureManager>

    La configuration de la fonction wasJmsClient-2.0 permet aux utilisateurs de définir les ressources JMS requises et permet au bean géré par message d'interagir avec le moteur de messagerie.

    Important : wasJmsClient-2.0La fonction prend en charge les fonctions des spécifications JMS 1.1 et JMS 2.0. Toutefois, vous pouvez choisir d'utiliser la fonction wasJmsClient-1.1 si vous voulez utiliser uniquement les fonctions qui sont conformes à la spécification JMS 1.1.
  2. Configurez une spécification d'activation JCA qui utilise l'adaptateur de ressources JMS pour que le bean géré par message serve de programme d'écoute sur une destination JMS spécifique. Vous pouvez configurer un bean géré par message de plusieurs façons pour qu'il interagisse avec le moteur de messagerie.
    1. Configurez le bean géré par message avec la propriété de spécification d'activation.
      Vous pouvez définir la propriété dans le fichier server.xml pour que le bean géré par message puisse l'utiliser afin d'être à l'écoute sur une destination JMS spécifique.
      <jmsActivationSpec id="JMSSample/JMSSampleMDB">
           <properties.wasJms destinationRef="jndi/MDBQ"  />
      </jmsActivationSpec>
      
      <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ">
           <properties.wasJms queueName="Q1"/>
      </jmsQueue>

      L'élément <destinationRef> référence l'ID de <jmsQueue>. Si aucun ID n'est mentionné dans <jmsQueue>, l'élément <destinationRef> doit désigner l'élément <jndiName> de <jmsQueue>.

      Remarque : La valeur d'ID doit être au format nom application/nom module/nom bean
      • nom application est le nom de l'application qui est déployée (par exemple JMSSample). Le nom de l'application ne s'applique que si le bean est conditionné dans un fichier EAR. Par défaut, l'application prend le nom de base du fichier EAR sans extension de nom de fichier sauf si celle-ci est spécifiée par le descripteur de déploiement application.xml.
      • nom module est le nom du module dans lequel le bean est conditionné. Dans un fichier JAR d'EJB autonome ou dans un fichier WAR, le module prend par défaut le nom de base du module sans extension de nom de fichier. Dans un fichier EAR, le module prend par défaut le nom de chemin du module sans extension de nom de fichier, mais inclut les noms de répertoire. Le <nom de module> par défaut peut être remplacé à l'aide de l'élément module-name du fichier ejb-jar.xml (pour les fichiers JAR d'EJB) ou du fichier web.xml (pour les fichiers WAR).
      • nom bean est le nom d'EJB du bean enterprise. Dans le cas des beans enterprise définis via une annotation, le bean prend par défaut le nom non qualifié de la classe de bean session, sauf s'il est spécifié dans le contenu de l'attribut name() de l'annotation MessageDriven. Dans le cas des beans enterprise définis via ejb-jar.xml, le nom est spécifié dans l'élément de descripteur de déploiement <ejb-name>.
    2. Utilisation d'annotations avec la propriété de spécification d'activation définie dans le fichier server.xml.

      Liberty prend en charge la définition d'annotations pour les beans gérés par message qui peuvent être utilisées avec la propriété de spécification d'activation définie dans le fichier server.xml. Pour pouvoir utiliser l'annotation, vous devez d'abord définir la propriété de spécification d'activation comme mentionné à l'étape précédente. De plus, pour chaque bean géré par message, vous devez définir les annotations conformément à l'exemple suivant :

      @MessageDriven(
      		  name = "JMSSampleMDB",
      		  activationConfig = {
      		    @ActivationConfigProperty(propertyName  = "destinationType", 
      		                              propertyValue = "javax.jms.Queue"),
      		    @ActivationConfigProperty(propertyName  = "userName", 
      		                              propertyValue = "user1"),
      		    @ActivationConfigProperty(propertyName  = "password",
      		                              propertyValue = "user1pwd"),	
      		    @ActivationConfigProperty(propertyName  = "destination", 
      		                              propertyValue = "jndi_INPUT_Q")                         
      		  }
      		)
      public class JMSSampleMDB implements MessageListener{
      	
      	 @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
      	  public void onMessage(Message message) {
      	 }
      }
    3. Utilisation du fichier de liaison EJB (ibm-ejb-jar-bnd.xml).

      Vous pouvez aussi utiliser ce fichier de liaison pour définir les informations sur les ressources requises pour que le bean géré par message puisse se connecter au moteur de messagerie. Lorsque vous utilisez le fichier de liaison EJB, le format de l'ID de propriété de spécification d'activation ne doit pas nécessairement être nom application/nom module/nom bean comme mentionné à l'étape 1.

      Ajoutez les informations de propriété de spécification d'activation dans le fichier server.xml.
      <jmsActivationSpec id="PriceChangeAS">
           <properties.wasJms destinationRef="jms/TriggerQ" />
      </jmsActivationSpec>
      
      <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ">
           <properties.wasJms queueName="Q1"/>                  
       </jmsQueue>
      Ajoutez les informations de liaison de bean géré par message suivantes dans le fichier ibm-ejb-jar-bnd.xml :
      <ejb-jar-bnd
              xmlns="http://websphere.ibm.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd" 
      	(http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd%27) version="1.1">
          
      	<message-driven name="PriceChangeMDBBean">
              	<jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" />
         	</message-driven>
      </ejb-jar-bnd>
      Remarque : Lorsque vous utilisez le fichier de liaison EJB, l'attribut activation-spec-binding-name figurant dans le fichier ibm-ejb-jar-bnd.xml doit désigner la valeur de l'ID de propriété de spécification d'activation spécifiée dans le fichier server.xml.
    4. [17.0.0.1 et ultérieur]Les informations sur les ressources peuvent également être spécifiées dans le fichier server.xml, sous l'élément <application>. Les informations de configuration dans le fichier server.xml ont la même forme que celles qui figurent dans le fichier ibm-ejb-jar-bnd.xml. Par exemple :
      <application location="PriceChangeApp.ear">
      	<ejb-jar-bnd moduleName="PriceChangeEJB">       
      	   <message-driven name="PriceChangeMDBBean">
              	<jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" />
      	   </message-driven>
      	</ejb-jar-bnd>
      </application>
      Remarque : Vous devez spécifier l'attribut moduleName pour l'élément <ejb-jar-bnd>. Sa valeur est le nom du fichier JAR contenant le MDB, sans l'extension .jar. Par exemple, si le MDB est contenu dans PriceChangeEJB.jar, la valeur de l'attribut moduleName sera PriceChangeEJB.

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_dep_msg_mdbsib.html