Despliegue de beans controlados por mensajes para conectarse a un adaptador de recursos JCA

Puede conectarse a un adaptador de recursos JCA mediante los beans controlados por mensajes (MDB).

Acerca de esta tarea

Cuando despliegue una aplicación de bean controlado por mensaje (MDB) en Liberty, será necesario realizar cierta configuración en el archivo server.xml para permitir que cada MDB reciba mensajes de un adaptador de recursos. La configuración de ejemplo descrita en este tema es para una aplicación que contiene solamente beans controlados por mensajes y un adaptador de recursos JMS. Si la aplicación también va a utilizar beans de sesión, se debe incluir la característica ejbLite-3.1.

Las propiedades de configuración variarán en función del adaptador de recursos específico que se esté utilizando.

Procedimiento

  1. Configure la característica MDB:

    Habilite el soporte de MDB en Liberty configurando las características mdb-3.1 y jca-1.6 en el archivo server.xml. Si desea realizar una búsqueda JNDI, también debe añadir la característica jndi-1.0 junto con las otras dos características.

    <featureManager>
         <feature>mdb-3.1</feature>
         <feature>jca-1.6</feature>
         <feature>jndi-1.0</feature>
    </featureManager>
  2. Configure las demás características mediante su adaptador de recursos JCA.
  3. Configure una especificación de activación JCA que utilice el adaptador de recursos de modo que el MDB actúe como un escucha. En los ejemplos siguientes se muestran formas diferentes de configurar un MDB para interactuar con el motor de mensajería. Estos ejemplos son específicos de los adaptadores de recursos JMS.
    1. Configure MDB mediante la propiedad de especificación de activación.
      Puede definir la propiedad en el archivo server.xml, de modo que el MDB puede utilizar la propiedad para escuchar en un destino JMS específico.
      <activationSpec id="JMSSample/JMSSampleMDB">
           <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </activationSpec>
      
      <jmsQueue id=”jndi/MDBQ” jndiName="jndi/MDBQ">
           <properties.wmqJms baseQueueName="MYQ" baseQueueManagerName="myQM"/>
      </jmsQueue>

      <destinationRef> hace referencia al ID de <jmsQueue>. Si no se menciona un ID en <jmsQueue>, el elemento <destinationRef> debe apuntar al <jndiName> de <jmsQueue>.

      Nota: El valor del ID debe tener el formato nombre de aplicación/nombre de módulo/nombre de bean, donde
      • nombre de aplicación es el nombre de la aplicación que se despliega (por ejemplo, JMSSample). El nombre de aplicación sólo se aplica si el bean está empaquetado dentro de un archivo EAR. La aplicación toma el valor predeterminado del nombre base del archivo EAR sin extensión de nombre de archivo a menos que se haya especificado en el descriptor de despliegue de application.xml.
      • nombre de módulo es el nombre del módulo en el que se ha empaquetado el bean. En un archivo ejb-jar autónomo o en un archivo WAR, <module-name> toma el valor predeterminado del nombre base del módulo con la extensión de nombre de archivo eliminada. En un archivo EAR, <module-name> toma como valor predeterminado el nombre de vía de acceso del módulo con la extensión de nombre de archivo eliminada, pero con los nombres de directorio incluidos. El <module-name> predeterminado se puede alterar utilizando el elemento ejb-jar.xml (para archivos ejb-jar) o web.xml (para archivos WAR).
      • nombre de bean es el nombre ejb del enterprise bean. Para los enterprise beans definidos mediante anotación, el nombre de bean toma el valor predeterminado del nombre no calificado de la clase de bean de sesión, a menos que se especifique en el contenido del atributo name() de la anotación MessageDriven. Para los enterprise beans definidos mediante ejb-jar.xml, se especifica en el elemento del descriptor de despliegue de <ejb-name>.
    2. Configure el MDB utilizando las anotaciones junto con la propiedad de especificación de activación tal como se define en el archivo server.xml.

      Liberty admite la definición de anotaciones para los beans controlados por mensajes que se pueden utilizar con la propiedad de especificación de activación definida en el archivo server.xml. Para poder utilizar la anotación, primero defina la propiedad de especificación de activación como se menciona en el paso anterior. Y para cada uno de los beans controlados por mensajes, puede definir las anotaciones como se muestra en el ejemplo siguiente:

      @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. Configure el MDB utilizando el archivo de enlaces EJB ibm-ejb-jar-bnd.xml.

      También puede utilizar este archivo de enlaces para definir la información de recursos que es necesaria para que el MDB se conecte con el motor de mensajería. Cuando utilice el archivo de enlaces EJB, no será necesario que el ID de la propiedad de especificación de activación tenga el formato nombre aplicación/nombre módulo/nombre bean tal como se ha mencionado en el paso a.

      Añada la información de la propiedad de especificación en el archivo server.xml.
      <activationSpec id="PriceChangeAS">
           <properties.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </activationSpec>
      
      <jmsQueue id=”jms/TriggerQ” jndiName="jms/TriggerQ">
           <properties.wmqJms baseQueueName="Q1"/>                  
       </jmsQueue>
      Añada la siguiente información de enlaces de MDB en el archivo 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>
      Nota: Cuando utiliza el archivo de enlaces EJB, el atributo activation-spec-binding-name del archivo ibm-ejb-jar-bnd.xml debe apuntar al valor del ID de la propiedad de especificación de activación que se ha especificado en el archivo server.xml.
    4. [17.0.0.1 and later]La información de recursos también puede especificarse en el archivo server.xml bajo el elemento <application>. La información de configuración de server.xml tiene la misma forma que la información especificada en el archivo ibm-ejb-jar-bnd.xml. Por ejemplo:
      <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>
      Nota: Debe especificar el atributo moduleName para el elemento <ejb-jar-bnd>. El valor es el nombre del archivo JAR que contiene el MDB sin la extensión .jar. Por ejemplo, si el MDB está contenido en PriceChangeEJB.jar, el atributo moduleName es PriceChangeEJB.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_dep_msg_mdbjca.html