Message-driven Beans für die Herstellung einer Verbindung zum integrierten Messaging-Server implementieren
Verwenden Sie die Message-driven Beans (MDB), um eine Verbindung zum integrierten Messaging-Server herzustellen.
Informationen zu dieser Task
- Wenn sich die MDB und die Messaging-Engine auf demselben Liberty -Server befinden
- Wenn die MDB mit einer fernen Messaging-Engine verbunden ist, die in einem anderen Liberty -Server ausgeführt wird. Das folgende Diagramm stellt die zwei Konfigurationsszenarien für MDBs dar. Das erste Szenario ist, wenn sich Messaging-Engine und MDB auf demselben Liberty -Server befinden. Im zweiten Szenario stellt die MDB eine Verbindung zu einer Messaging-Engine in einem anderen Server her.

Vorgehensweise
- MDB-Feature konfigurieren
Aktivieren Sie die MDB-Unterstützung, indem Sie die Features
jmsMdb-3.1undwasJmsClient-2.0in der Datei server.xml konfigurieren. Wenn Sie eine JNDI-Suche durchführen möchten, müssen Sie auch das Featurejndi-1.0zusammen mit den anderen zwei Features hinzufügen.<featureManager> <feature>jmsMdb-3.1</feature> <feature>wasJmsClient-2.0</feature> <feature>jndi-1.0</feature> </featureManager>Wenn Sie das Feature
wasJmsClient-2.0konfigurieren, können Sie die erforderlichen JMS-Ressourcen definieren und die MDB für die Interaktion mit der Messaging-Engine aktivieren.Wichtig: Das FeaturewasJmsClient-2.0unterstützt die Features der Spezifikationen JMS 1.1 und JMS 2.0 . Sie können jedoch das FeaturewasJmsClient-1.1verwenden, wenn Sie nur die Features verwenden möchten, die mit der Spezifikation JMS 1.1 kompatibel sind. - Konfigurieren Sie eine JCA-Aktivierungsspezifikation, die den JMS-Ressourcenadapter verwendet, sodass die MDB als Listener
an einem bestimmten JMS-Ziel agiert.
Wählen Sie eine der folgenden drei Optionen aus, um die MDB für die Interaktion mit der Messaging-Steuerkomponente zu konfigurieren:
- Definieren Sie die Eigenschaften der Aktivierungsspezifikation in der Datei server.xml .
- Definieren Sie Ressourceninformationen in der EJB-Bindungsdatei.
- Definieren Sie Ressourceninformationen im Element
applicationin der Datei server.xml .
Option 1: Definieren Sie Aktivierungsspezifikationseigenschaften in der Datei server.xml .
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 Attribut
destinationRefbezieht sich auf die ID des ElementsjmsQueue. Wenn fürjmsQueuekeine ID definiert ist, muss das AttributdestinationRefauf den WertjndiNamedes ElementsjmsQueueverweisen.Hinweis: Der ID-Wert muss das Formatapplication name/module name/bean nameaufweisen.- 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 Datei ejb-jar oder WAR wird als Wert für
module-namestandardmäßig der Basisname des Moduls mit allen entfernten Dateinamenerweiterungen verwendet. In einer Datei EAR wird als Wert fürmodule-namestandardmäßig der Pfadname des Moduls mit allen entfernten Dateinamenerweiterungen, jedoch mit allen enthaltenen Verzeichnisnamen verwendet. Sie können den Standardwertmodule-nameüberschreiben, indem Sie das Elementmodule-namevon ejb-jar.xml (für ejb-jar -Dateien) oder web.xml (für WAR -Dateien) verwenden. - Bean-Name ist der
ejb-nameder 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 AnnotationMessageDrivenenthält eine entsprechende Angabe. Für Enterprise-Beans, die über ejb-jar.xmldefiniert werden, wird sie im Implementierungsdeskriptorelementejb-nameangegeben.
Option 2: Definieren Sie Ressourceninformationen in 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 Eigenschafts-ID der Aktivierungsspezifikation nicht unbedingt das Format
application name/module name/bean nameaufweisen.Definieren Sie die Eigenschaften der Aktivierungsspezifikation in der Datei server.xml .<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 zur 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>Hinweis: Bei Verwendung der EJB-Bindungsdatei 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.Option 3: Definieren Sie Ressourceninformationen im Element
applicationin der Datei server.xml .Sie können die server.xml -Konfigurationsdaten in derselben Form definieren wie die Informationen, die in der Datei ibm-ejb-jar-bnd.xml angegeben sind, wie im folgenden Beispiel gezeigt:
<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>Hinweis: Geben Sie das Attribut moduleName für das Elementejb-jar-bndan. 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 WertPriceChangeEJB.
- Optional: Geben Sie Aktivierungskonfigurationseigenschaften für die
ActivationSpec-Instanz an, indem Sie Annotationen in der MDB angeben.Liberty unterstützt die Definition von Annotationen für MDBs, die mit der Aktivierungsspezifikationseigenschaft verwendet werden können, die in der Datei server.xml definiert ist. Wenn Sie die Annotation verwenden möchten, definieren Sie zuerst die Aktivierungsspezifikationseigenschaft wie im vorherigen Schritt beschrieben. Für jede MDB können Sie 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) { } }