Message-driven Beans für die Herstellung einer Verbindung zum integrierten Messaging-Server implementieren

Verwenden Sie die Message-driven Beans (MDBs), um eine Verbindung zum integrierten Messaging-Server herzustellen.

Informationen zu diesem Vorgang

Die MDB kann in Liberty in den folgenden zwei Szenarios konfiguriert werden:
  • Wenn sowohl die MDB als auch die Messaging-Engine sich auf demselben Liberty-Server befinden.
  • Wenn die MDB eine Verbindung zu einer fernen Messaging-Engine herstellt, die auf einem anderen Liberty-Server ausgeführt wird.
    Das Diagramm stellt die zwei Konfigurationsszenarien für MDBs dar. Im ersten Szenario befinden sich sowohl die Messaging-Engine als auch die MDB auf demselben Liberty-Server. Im zweiten Szenario stellt die MDB eine Verbindung zu einer Messaging-Engine her, die sich auf einem anderen Server befindet.

Vorgehensweise

  1. Konfigurieren Sie das MDB-Feature:

    Aktivieren Sie die MDB-Unterstützung im Liberty-Server, indem Sie die Features jmsMdb-3.1 und wasJmsClient-2.0 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>jmsMdb-3.1</feature>
         <feature>wasJmsClient-2.0</feature>
         <feature>jndi-1.0</feature>
    </featureManager>

    Indem Sie das Feature wasJmsClient-2.0 konfigurieren, versetzen Sie die Benutzer in die Lage, die erforderlichen JMS-Ressourcen zu definieren, und ermöglichen die Interaktion zwischen Message-driven Beans und der Messaging-Engine.

    Wichtig: Das Feature wasJmsClient-2.0 unterstützt die Features der Spezifikationen JMS 1.1 und JMS 2.0. Sie können jedoch das Feature wasJmsClient-1.1 verwenden, wenn Sie nur die Features nutzen möchten, die mit der Spezifikation JMS 1.1 kompatibel sind.
  2. Konfigurieren Sie eine JCA-Aktivierungsspezifikation, die den JMS-Ressourcenadapter verwendet, sodass die MDB als Listener an einem bestimmten JMS-Ziel agiert. Im Folgenden werden mehrere Möglichkeiten beschrieben, eine MDB für die Interaktion mit der Messaging-Engine zu konfigurieren.
    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.
      <jmsActivationSpec id="JMSSample/JMSSampleMDB">
           <properties.wasJms destinationRef="jndi/MDBQ"  />
      </jmsActivationSpec>
      
      <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ">
           <properties.wasJms queueName="Q1"/>
      </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. Annotationen zusammen mit der in der Datei server.xml definierten Aktivierungsspezifikationseigenschaft verwenden

      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. Der Benutzer kann für jede MDB 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. EJB-Bindungsdatei (ibm-ejb-jar-bnd.xml) verwenden

      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 1 beschrieben.

      Fügen Sie die Informationen zur Aktivierungsspezifikationseigenschaft der Datei server.xml hinzu.
      <jmsActivationSpec id="PriceChangeAS">
           <properties.wasJms destinationRef="jms/TriggerQ" />
      </jmsActivationSpec>
      
      <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ">
           <properties.wasJms queueName="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_mdbsib.html