Message-driven Beans für die Herstellung einer Verbindung zu IBM MQ implementieren
Sie können mit Message-driven Beans (MDB) eine Verbindung zu IBM MQ herstellen.
Vorgehensweise
- Konfigurieren Sie das MDB-Feature:
Aktivieren Sie die MDB-Unterstützung im Liberty-Server, indem Sie die Features jmsMdb-3.2 und wmqJmsClient-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.2</feature> <feature>wmqJmsClient-2.0</feature> <feature>jndi-1.0</feature> </featureManager>
Indem Sie das Feature wmqJmsClient-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.
Anmerkung: Das Feature wmqJmsClient-2.0 unterstützt die Features der Spezifikationen JMS 1.1 und JMS 2.0. Sie können aber das Feature wmqJmsClient-1.1 verwenden, wenn Sie nur die Features nutzen möchten, die mit der Spezifikation JMS 1.1 kompatibel sind. - Geben Sie die Position des IBM MQ-Ressourcenadapters an, indem Sie den folgenden Eintrag der Datei server.xml hinzufügen:
Das Attribut value gibt den absoluten Pfad zur Datei des IBM MQ-Ressourcenadapters, wmq.jmsra.rar, an.<variable name="wmqJmsClient.rar.location" value="/Pfad/zu/wmq/rar/wmq.jmsra.rar"/>
Details zu den unterstützten Versionen und zum Abrufen der Datei wmq.jmsra.rar finden Sie im technischen Hinweis 1633761 zu IBM MQ. Rufen Sie die Datei wmq.jmsra.rar ab und installieren Sie sie über Fix Central.
- 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.
- 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.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <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 im Element <jmsQueue> nicht erwähnt wird, muss das Element <destinationRef> auf das Element <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 <module-name> 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.
- 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) { } }
- 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.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <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.
- Konfigurieren Sie die MDB mit der Aktivierungsspezifikationseigenschaft.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_dep_msg_mdbwmq
Dateiname: twlp_dep_msg_mdbwmq.html