Message-driven Beans für das Herstellen einer Verbindung zu einem JCA-Ressourcenadapter implementieren

Sie können über Message-driven Beans (MDB) eine Verbindung zu einem JCA-Ressourcenadapter herstellen.

Informationen zu diesem Vorgang

Wenn Sie eine MDB-Anwendung in Liberty implementieren, müssen in der Datei server.xml einige Konfigurationsaufgaben ausgeführt werden, damit die einzelnen MDBs Nachrichten von einem Ressourcenadapter empfangen. Die in diesem Artikel beschriebene Beispielkonfiguration gilt für eine Anwendung, die nur MDBs und einen JMS-Ressourcenadapter enthält. Verwendet die Anwendung auch Session-Beans, muss das Feature ejbLite-3.1 enthalten sein.

Die Konfigurationseigenschaften variieren basierend auf dem verwendeten Ressourcenadapter.

Vorgehensweise

  1. Konfigurieren Sie das MDB-Feature:

    Aktivieren Sie die MDB-Unterstützung in Liberty, indem Sie die Features mdb-3.1 und jca-1.6 in der Datei server.xml konfigurieren. Wenn Sie eine JNDI-Suche durchführen möchten, müssen Sie auch das Feature jndi-1.0 zusammen mit den anderen zwei Features hinzufügen.

    <featureManager>
         <feature>mdb-3.1</feature>
         <feature>jca-1.6</feature>
         <feature>jndi-1.0</feature>
    </featureManager>
  2. Konfigurieren Sie weitere von Ihrem JCA-Ressourcenadapter benötigte Features.
  3. Konfigurieren Sie eine JCA-Aktivierungsspezifikation, die den Ressourcenadapter verwendet, sodass die MDB als Listener agiert. Die folgenden Beispiele zeigen unterschiedliche Methoden der Konfiguration einer MDB für die Interaktion mit der Messaging-Engine. Diese Beispiele gelten speziell für JMS-Ressourcenadapter.
    1. Konfigurieren Sie die MDB mit der Aktivierungsspezifikationseigenschaft.
      Sie können die Eigenschaft in der Datei server.xml definieren, damit die MDB die Eigenschaft verwenden kann, um ein bestimmtes JMS-Ziel zu überwachen.
      <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>

      Das Element <destinationRef> verweist auf die ID von <jmsQueue>. Wenn eine ID in <jmsQueue> nicht erwähnt wird, muss <destinationRef> auf <jndiName> von <jmsQueue> verweisen.

      Anmerkung: Der ID-Wert muss im Format Anwendungsname/Modulname/Bean-Name angegeben werden.
      • Anwendungsname ist der Name der Anwendung, die implementiert wird (z. B. JMSSample). Der Anwendungsname ist nur gültig, wenn die Bean in einer EAR-Datei gepackt wird. Für die Anwendung wird standardmäßig der Basisname der EAR-Datei ohne Dateinamenerweiterung verwendet, es sei denn, der Implementierungsdeskriptor application.xml enthält eine entsprechende Angabe.
      • Modulname ist der Name des Moduls, in dem die Bean gepackt wird. In einer eigenständigen EJB-JAR-Datei oder WAR-Datei wird für <Modulname> standardmäßig der Basisname des Moduls ohne Dateinamenerweiterung verwendet. In einer EAR-Datei wird für <module-name> standardmäßig der Pfadname des Moduls ohne Dateinamenerweiterung, aber mit Angabe etwaiger Verzeichnisnamen verwendet. Das Standardelement <module-name> kann mit dem "module-name"-Element der Datei ejb-jar.xml (für EJB-JAR-Dateien) bzw. web.xml (für WAR Dateien) überschrieben werden.
      • Bean-Name ist der EJB-Name der Enterprise-Bean. Für Enterprise-Beans, die durch Annotationen definiert werden, wird standardmäßig der nicht qualifizierte Name der Session-Bean-Klasse als Bean-Name verwendet, es sei denn, der Inhalt des Attributs "name()" der Annotation MessageDriven enthält eine entsprechende Angabe. Für Enterprise-Beans, die über ejb-jar.xml definiert sind, wird der Bean-Name im Element <ejb-name> des Implementierungsdeskriptors angegeben.
    2. Konfigurieren Sie die MDB mit Annotationen zusammen mit der in der Datei server.xml definierten Aktivierungsspezifikationseigenschaft.

      Liberty unterstützt die Definition von Annotationen für MDBs, die mit der in der Datei server.xml definierten Aktivierungsspezifikationseigenschaft verwendet werden können. Um die Annotation zu verwenden, definieren Sie zuerst die Aktivierungsspezifikationseigenschaft, wie im vorherigen Schritt beschrieben. Sie können für jede der MDBs die Annotationen definieren, wie im folgenden Beispiel gezeigt:

      @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. Konfigurieren Sie die MDB mit der EJB-Bindungsdatei ibm-ejb-jar-bnd.xml.

      Sie können auch diese Bindungsdatei verwenden, um die Ressourceninformationen zu definieren, die erforderlich sind, damit die MDB eine Verbindung zur Messaging-Engine herstellen kann. Wenn Sie die EJB-Bindungsdatei verwenden, muss die ID der Aktivierungsspezifikationseigenschaft nicht notwendigerweise im Format Anwendungsnamen/Modulname/Bean-Name angegeben werden, wie in Schritt a beschrieben.

      Fügen Sie die Informationen zur Aktivierungsspezifikationseigenschaft der Datei server.xml hinzu.
      <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>
      Fügen Sie die folgenden MDB-Bindungsinformationen der Datei ibm-ejb-jar-bnd.xml hinzu.
      <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>
      Anmerkung: Wenn Sie die EJB-Bindungsdatei verwenden, muss das Attribut activation-spec-binding-name in der Datei ibm-ejb-jar-bnd.xml auf die ID der Aktivierungsspezifikationseigenschaft verweisen, die in der Datei server.xml angegeben ist.
    4. [17.0.0.1 und höher]Die Ressourceninformationen können auch in der Datei server.xml über das Element <application> angegeben werden. Die Konfigurationsinformationen der Datei server.xml liegen in demselben Format vor, wie die in der Datei ibm-ejb-jar-bnd.xml enthaltenen Informationen. Beispiel:
      <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>
      Anmerkung: Sie müssen das Attribut moduleName für das Element <ejb-jar-bnd> angeben. Der Wert ist der Name der JAR-Datei, die die MDB ohne die Dateierweiterung .jar enthält. Wenn zum Beispiel die MDB in der Datei PriceChangeEJB.jar enthalten ist, hat das Attribut moduleName den Wert PriceChangeEJB.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_dep_msg_mdbjca.html