Mustercode 'Asynchronous Consumer' für Verwendung eines JMS-Transports konfigurieren
In diesem Mustercode wird WebSphere MQ als JMS-Provider verwendet; die verwalteten Objekte
müssen mit dem JMSAdmin-Tool erstellt werden.
Vorbereitungen:
Wenn Sie den Mustercode unter Linux ausführen, müssen Sie folgende Schritte ausführen:
- Fügen Sie die Klasse JMSAdmin zum Klassenpfad hinzu, indem Sie folgende Datei zum Klassenpfad
hinzufügen:
>MQ_Installationsverzeichnis</java/lib/com.ibm.mqjms.jar
- Fügen Sie die Java-Speicherposition zur Variablen PATH hinzu, indem Sie folgenden Code in den
Klassenpfad einschließen:
>JAVA_HOME</bin
Verwaltete Objekte mit dem Tool JMSAdmin erstellen
Die folgenden Anweisungen setzen voraus, dass WebSphere MQ im Verzeichnis
MQ-Installationsverzeichnis installiert ist.
Das JMSAdmin-Tool und
die JMSAdmin-Konfigurationsdatei befinden sich an folgenden Speicherpositionen:
- Unter Windows: MQ-Installationsverzeichnis\java\bin
- Unter Linux: MQ-Installationsverzeichnis/java/bin
Im Projekt 'AsyncWebServiceFlows' müssen Sie die Datei
SOAPJMSSample.defs mit dem Tool JMSAdmin verwenden.
Bevor Sie das Tool JMSAdmin verwenden können, muss die Datei
JMSAdmin.config geändert werden.
Datei JMSAdmin.config ändern
So ändern Sie die Datei JMSAdmin.config:
- Öffnen Sie in einem Texteditor die Datei JMSAdmin.config.
- Setzen Sie alle Optionen, die nicht erforderlich sind, auf Kommentar, indem Sie ein
Nummernzeichen (#) hinzufügen. Entfernen Sie die Kommentarzeichen für alle erforderlichen Optionen, indem Sie das Nummernzeichen (#) löschen.
# The following line specifies which JNDI service provider is in use.
# It currently indicates a File System Context. If a different
# service provider is used, this line must be commented out, and the
# appropriate one must be uncommented.
#
# com.sun.jndi.fscontext.RefFSContextFactory is the FileSystem JNDI Context
#
#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
#INITIAL_CONTEXT_FACTORY=com.ibm.ejs.ns.jndi.CNInitialContextFactory
#INITIAL_CONTEXT_FACTORY=com.ibm.websphere.naming.WsnInitialContextFactory
#
# The following line specifies the URL of the initial context
# for the service provider. It currently refers to a File System Context.
# Examples of an LDAP root context URL and the JNDI namespace for WebSphere
# are also shown, commented out.
#
#PROVIDER_URL=ldap://localhost/o=ibm,c=us
PROVIDER_URL=file:/C:/SOAPJNDIBindings
#PROVIDER_URL=iiop://localhost/
- Stellen Sie sicher, dass PROVIDER_URL auf /C:/SOAPJNDIBindings
oder ein funktional entsprechendes Verzeichnis unter Linux gesetzt ist und INITIAL_CONTEXT_FACTORY
auf com.sun.jndi.fscontext.RefFSContextFactory gesetzt ist.
- Speichern Sie die Datei.
Sie können jetzt die Objekte erstellen.
Objekte erstellen
Erstellen Sie die von JNDI verwalteten Objekte, um die im Mustercode verwendeten
JMS-Verbindungsfactorys und Ziele zu konfigurieren, indem Sie das Tool WebSphere MQ JMSAdmin
ausführen.
Sie erstellen die Objekte, indem Sie das Tool JMSAdmin ausführen und die Datei
SOAPJMSSample.defs als Eingabe verwenden.
Geben Sie folgende Befehle in der Befehlszeile ein:
- Unter Windows:
cd MQ-Installationsverzeichnis\java\bin
JMSAdmin < "workspace_path\AsyncWebServiceFlows\SOAPJMSSample.defs"
- Unter Linux:
cd MQ-Installationsverzeichnis/java/bin
. ./setjmsenv
./JMSAdmin < workspace_path/AsyncWebServiceFlows/SOAPJMSSample.defs
Dabei gilt: WebSphere MQ ist im Verzeichnis
MQ-Installationsverzeichnis installiert und
Arbeitsbereichspfad ist der vollständige Pfad des
Arbeitsverzeichnisses von WebSphere Message Broker Toolkit.
Die Objekte und die BINDINGS-Datei (.bindings) werden erstellt.
SOAP-Knoten für JMS konfigurieren
- Öffnen Sie den Nachrichtenfluss
AsyncWebServiceFlows.WebServicesAsyncServerFlow im
Nachrichtenflusseditor.
- Klicken Sie mit der rechten Maustaste auf den SOAPInput-Knoten im Nachrichtenfluss und klicken Sie anschließend auf Eigenschaften, um die Ansicht 'Eigenschaften' aufzurufen.
- Wählen Sie in der Ansicht 'Eigenschaften' die Registerkarte Grundeinstellung aus.
- Der Wert im Feld Imported binding (Importierte Bindung) ist auf
OrderServiceSOAP und der Wert für die Eigenschaft
Transport ist auf HTTP gesetzt. Ändern
Sie den Wert von Imported binding (Importierte Bindung) in
OrderServiceSOAPJMSBinding.
Der Wert der Eigenschaft Transport wird in JMS geändert.
- Öffnen Sie den Nachrichtenfluss
AsyncWebServiceFlows.WebServicesAsyncClientFlow im
Nachrichtenflusseditor und konfigurieren Sie das Feld Imported
binding für den SOAPAsyncRequest-Knoten, indem Sie die oben beschriebenen Schritte ausführen.
JNDI-Pfad in den Nachrichtenflüssen konfigurieren
- Unter Windows:
SOAP-Knoten sind bereits mit der Position der JMS-Bindungsdatei (.bindings) konfiguriert.
Wenn Sie jedoch eine JMS-Bindungsdatei an einer anderen Position erstellt haben, müssen Sie die
SOAP-Knoten rekonfigurieren, indem Sie die andere Position der Bindungsdatei angeben.
Führen Sie die Schritte im folgenden Abschnitt aus: "SOAP-Knoten mit der Position der JMS-Bindungsdatei konfigurieren".
- Unter Linux:
Stellen Sie sicher, dass die SOAP-Knoten in den Nachrichtenflüssen die Position der von Ihnen erstellten JMS-Bindungsdatei kennen. Gehen Sie dazu wie im folgenden Abschnitt beschrieben vor: "SOAP-Knoten mit der Position der JMS-Bindungsdatei konfigurieren".
SOAP-Knoten mit der Position der JMS-Bindungsdatei konfigurieren:
- Öffnen Sie den Nachrichtenfluss
AsyncWebServiceFlows.WebServicesAsyncServerFlow im
Nachrichtenflusseditor.
- Klicken Sie mit der rechten Maustaste auf den SOAPInput-Knoten im Nachrichtenfluss und klicken Sie anschließend auf Eigenschaften, um die Ansicht 'Eigenschaften' aufzurufen.
- Wählen Sie in der Ansicht Eigenschaften die Registerkarte JMS-Transport aus.
- Geben Sie im Feld JNDI-URL-Bindungen für Speicherposition den
Pfad ein, der in der Datei JMSAdmin.config in der Zeile PROVIDER_URL
angegeben ist.
- Unter Windows: Wenn Sie die Position der JMS-Bindungsdatei geändert haben, geben Sie diese ein; andernfalls lassen Sie den Wert file:/C:/SOAPJNDIBindings unverändert.
- Unter Linux: Geben Sie file:///home/Benutzer/SOAPJNDIBindings ein, wobei Benutzer für den Benutzernamen steht, unter dem Sie den Broker ausführen.
- Stellen Sie sicher, dass der in den Knoteneigenschaften eingegebene Pfad mit dem in der Datei
JMSAdmin.config angegebenen Pfad übereinstimmt. Wenn die beiden Pfadangaben
nicht übereinstimmen, funktionieren die Nachrichtenflüsse nicht.
- Speichern Sie den Nachrichtenfluss.
- Öffnen Sie den Nachrichtenfluss
AsyncWebServiceFlows.WebServicesAsyncClientFlow im
Nachrichtenflusseditor und konfigurieren Sie den SOAPAsyncRequest-Knoten mit der Position der Datei
.bindings, indem Sie die oben beschriebenen Schritte ausführen.
- Die Nachrichtenflüsse sind jetzt konfiguriert und können für den Broker implementiert
werden.
BAR-Datei erneut erstellen und Nachrichtenflüsse implementieren
Erstellen Sie zum Implementieren der geänderten Nachrichtenflüsse 'WebServicesAsyncServerFlow'
und 'WebServicesAsyncClientFlow' eine neue Brokerarchivdatei (BAR-Datei), die beide
Nachrichtenflüsse enthält.
BAR-Datei erstellen:
- Doppelklicken Sie auf die BAR-Datei
AsyncWebServiceFlows.AsyncWebServiceSample.bar.
- Klicken Sie in der Registerkarte Verwalten auf Erstellen, um die BAR-Datei erneut zu erstellen.
- Speichern Sie die neue BAR-Datei.
- Klicken Sie auf die BAR-Datei und ziehen Sie sie in die standardmäßige Ausführungsgruppe in
der Brokeransicht. Dadurch werden die Nachrichtenflüsse auf dem Broker implementiert.
Sie können den Mustercode jetzt ausführen. Weitere Informationen finden Sie im Abschnitt
Mustercode 'Asynchronous Consumer' ausführen.
Sie können denselben Flusstest verwenden, weil der
Clientnachrichtenfluss von einer WebSphere MQ-Warteschlange gesteuert wird.
Zurück zum Beginn des Mustercodes