Tutorial 13
Transcription
Tutorial 13
Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Tutorial 13 CICS-Zugriff mit Hilfe von MQ und einem Java-Klienten 1 Anlegen eines Kontos mittels der CICS-Transaktion "NACT" Dieses Tutorial benötigt eine Java 2 SDK- sowie eine WebSphere MQ-Installation auf einem Windows XP-Rechner (Service Pack 2). Sind SDK sowie MQ nicht vorinstalliert, müssen Sie zuerst das Tutorial 11 durchführen, das die Installationen von SDK und MQ behandelt. Aufgabe: Loggen Sie sich in CICS des OS/390-Servers "Lucas" ein und starten Sie dort die Transaktion NACT (siehe auch die Tutorien 3 und 5 in der C-Version). Legen Sie für sich ein Konto mit der Nummer "100xx" oder "10xxx" an, wobei die xx oder xxx für die Nummer Ihres Prakt-Accounts auf Lucas stehen. Sollte das zu Ihrer Account-Nr. gehörende Konto schon existieren, so modifizieren Sie dieses Konto. Füllen Sie alle notwendigen Felder aus. Ihr Vor- und Zuname (oder alle Vor- und Zunamen der Teilnehmer, die gemeinsam dieses Tutorial bearbeiten) müssen in die Felder eingetragen werden. Bei allen anderen Feldern können Sie gerne kreativ sein. Aufgabe: Arbeiten Sie das Tutorial gründlich durch und vollziehen Sie alles, was hier vorgestellt wird, nach. 1 Einführung 1.1 Übersicht Electronic Mail ist ein weit verbreiteter Messaging Service. Ein Klient schickt eine Nachricht an einen Mail-Server. Dieser speichert die Nachricht in eine als Mailbox bezeichnete Queue, die der Server auf seinem Plattenspeicher unterhält. Der Besitzer dieser Mailbox kann die Nachricht dort später abholen. Mail PräsentationsLogik Mailbox BusinessLogik Klient Server Abbildung 1 Message oriented Middleware (MOM), auch als Message based Queuing (MBQ) bezeichnet, ist ein ähnliches Verfahren. Im Gegensatz zu Electronic Mail speichert der Klient hierbei die Nachricht in einer Queue auf seinem eigenen Plattenspeicher. Eine MOM-Instanz auf dem Klienten transportiert die Nachricht dann in die Queue des MOM-Servers. Die beiden MOM-Instanzen arbeiten nach ACIDPrinzipien; die Auslieferung der Nachricht an die Server-Queue wird garantiert. Die Verbindung zwischen Klient und Server wird als Channel bezeichnt (nicht zu verwechseln mit dem Begriff Channel in der S/390 Ein-/Ausgabe-Architektur). Ein MOM-Channel ist unidirectional. 1 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Sender-Queue Empfänger-Queue Klient Server Abbildung 2 Eine Verbindung zwischen zwei Rechnern besteht häufig aus zwei Channels (und zwei Queues auf jedem Rechner), jeweils einen für das Senden und einen für das Empfangen. Klient Server Abbildung 3 Websphere MQ ist ein populäres MOM-Produkt der Firma IBM. Es ist de facto für alle Plattformen verfügbar, u.a. für Windows, Linux, Solaris, AIX, HP-UX Digital Unix, OS400, OS/390 sowie z/OS. 1.2 Aufgabenstellung Die vorliegende Aufgabe betrifft eine Klient/Server-Anwendung, bei der die Business-Logik in der Form einer CICS-Anwendung auf einem OS/390-Server vorliegt. Die Präsentations-Logik ist in Form einer Java-Anwendung auf dem Klienten vorhanden. Klient und Server kommunizieren über zwei Websphere MQ-Kanäle miteinander. Java PräsentationsLogik MQ-Kanal MQ-Kanal Windows XP-Klient CICS BusinessLogik OS/390-Server Abbildung 4 Es ist Websphere MQ und eine Java Präsentations-Logik auf einem Windows XP-Klienten zu installieren. Anschließend soll die Java Präsentations-Logik über Websphere MQ und dem Websphere MQ-CICS Bridge mit der CICS Business-Logik auf dem OS/390-Rechner kommunizieren. Es wird hierfür der OS/390-Rechner lucas.informatik.uni-leipzig.de eingesetzt, auf dem MQSeries (Vorgängerversion von Websphere MQ) und die CICS Business-Logik bereits vorinstalliert sind. Auf dem OS/390-Rechner lucas.informatik.uni-leipzig.de ist eine CICS-Transaktion mit dem Namen (Transaktions-ID) NACT installiert. Wir wollen auf die COMMAREA der NACT CICS-Transaktion mittels eines Java GUI-Klienten zugreifen. Die Verbindung Klient zu dem OS/390-CICS Transaction Server soll mit Hilfe von Websphere MQ erfolgen. Wir benutzen hierfür einen Windows XP-Klienten, auf dem eine Java-GUI für die NACT CICS-Transaktion sowie ein Websphere MQ-Server von uns installiert wird. Auf unserem OS/390-Server lucas.informatik.uni-leipzig.de ist ein MQSeries-Server mit einer MQSeries-CICS Bridge bereits installiert. Diese Konfiguration ist in Abbildung 5 dargestellt. 2 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Java GUI Java GUI MQClient MQ MQSeries Server TCP/IP Windows XP MQSeries MQSeries Server CICS OS/390 Klient Server Abbildung 5 MQClient und der Klienten-seitige Websphere MQ-Server laufen unter Windows XP in zwei getrennten Adressräumen. Auf der Klientenseite unterhält der Websphere MQ-Server eine Java Bridge Task (eine Java-Klasse). Auf der Serverseite unterhält der dortige Websphere MQ-Server eine CICS Bridge Task. Jeder der beiden MQ-Server unterhält einen Queue Manager sowie ein vom Benutzer erstelltes Personalisierungsprogramm (hier als MQCommunicator bezeichnet). Jeder Queue Manager unterhält eine Queue für das Senden von Nachrichten an den Partner-Queue Manager, die Transmission Queue, sowie eine Queue zum Empfangen von Nachrichten von dem Partner-Queue Manager, die Reply-To Queue. Zusätzlich besitzt jeder Queue Manager noch eine weitere Queue, die Remote Queue. Jedem der beiden Queue Manager sind zwei (MQ) Channels zugeordnet. Auf der OS/390-Seite verbindet die Reply-To Queue die CICS Bridge des dortigen Queue Managers mit der CICS NACT-Anwendung. Auf der Windows XP-Seite verbindet eine Server Connection die Java-Applikation mit der Reply-To Queue. Jeder Queue Manager verwendet aus Sicherheits- und Verfügbarkeitsgründen weitere interne Objekte, die nicht weiter interessieren sollen. Der hier verwendete Klienten-seitige Queue Manager benutzt den Namen PRAKT20.NACT. Der hier verwendete Server-seitige Queue Manager benutzt den Namen MQA1. 2 Vorschau und Bezeichnungen Java Bridge Task Queue Manager Name = PRAKT20.NACT Channels MQServer Queue Manager Name = MQA1 CICS Bridge Task MQSeriesServer Windows XP-Klient OS/390-Server Abbildung 6 PRAKT20.NACT ist der Name des Windows Queue Managers (Remote Queue Manager). MQA1 ist der Name des OS/390 Queue Managers (Server Queue Manager). Die Verbindung zwischen dem Queue Manager auf dem OS/390-Server und dem Queue Manager auf dem Windows XP-Klienten halten Channels aufrecht. Ein Sendekanal verschickt Daten und ein Empfängerkanal empfängt Daten. 3 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Zuerst sind die MQ-Objekte auf der Klientenseite zu erstellen. Dies sind der Queue Manager PRAKT20.NACT sowie drei Warteschlangen und drei Kanäle. Anschließend sind MQSeries-Objekte auf dem S/390-Server zu erstellen. Der Queue Manager ist schon vorhanden. Doch je zwei Warteschlangen und zwei Kanäle müssen hier erstellt werden. Nun ist eine Java-Anwendung zu compilieren. Im vorletzten Schritt sind der lokale Queue Manager sowie die beiden Kanäle zwischen den Queue Managern auf Klinten- sowie Serverseite zu starten, damit so eine Kommunikation zwischen beiden Queue Managern möglich wird. Zuletzt ist die Java-Anwendung zu starten, welche die grafische Oberfläche für die CICS-NACTTransaktion liefert. 3 Lokale MQ-Objekte erstellen Loggen Sie sich unter Windows unter dem Benutzer Übung "z/OS und OS/390" oder einem anderen Benutzer mit eingeschränkten Rechten (aber mit MQ-Administrationsrechten) ein und starten Sie anschließend den WebSphere MQ-Explorer wie folgt: Start Alle Programme IBM WebSphere MQ Express ein Klick auf WebSphere MQ-Explorer (s. Abbildung 7) Abbildung 7 Es erscheint das MQ-Konsolenstamm (Console Root)-Fenster (Abbildung 8). Hiermit wird MQ administriert und gesteuert. 4 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 8 3.1 Den lokalen Queue-Manager erstellen Abbildung 9 zeigt ein Skript, dass eventuell vorhandene Queue Manager löscht, einen Queue Manager PRAKT20.NACT erstellt und anschließend startet. Es kann dieses Skript als .bat-Datei erstellt und anschließend ausgeführt werden. Alternativ dazu können in einem DOS-Fenster die entsprechenden Befehle eingegeben werden. 5 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 @echo off rem ***************************************************************** rem * This command file sets up the MQ Queue definitions rem ***************************************************************** rem The parameter specifies the queue manager name rem eg. CrtQ default for PRAKT20 title Setting up MQ Series for PRAKT20 echo * End the MQ queue manager if already running echo endmqm -i PRAKT20.NACT endmqm -i PRAKT20.NACT echo. echo * Delete the old MQ queue manager if one exists echo dltmqm PRAKT20.NACT dltmqm PRAKT20.NACT echo. echo * Create the new queue manager echo crtmqm -q PRAKT20.NACT crtmqm -q PRAKT20.NACT echo. echo * Start the new queue manager echo strmqm PRAKT20.NACT strmqm PRAKT20.NACT echo. pause exit Abbildung 9 Aufgabe: Legen Sie einen Queue Manager PRAKT<xx>.NACT oder PRAK<xxx>.NACT an und starten Sie ihn. xx bzw. xxx stehen für die Nummer Ihres PRAKT- oder PRAK-Accounts auf dem Leipziger S/390Server Lucas. Wenn der Queue Manager erfolgreich erstellt und gestartet wurde, wird dies im KonsolenstammFenster wie Abbildung 10 demonstriert durch einen grünen Pfeil nach oben angezeigt. 6 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 10 Wenn Sie Zweifel an der Aktualität des Konsolenstamm-Fensters haben, also beispielsweise der gerade erfolgreich erstellte Queue Manager nicht angezeigt wird, muß eine Aktualisierung erfolgen. Man markiert das Objekt, das man aktualisieren möchte, indem man mit der rechten Maustaste auf dieses klickt. Anschließend wählt man "Aktualisieren" aus (Abbildung 11). Abbildung 11 7 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 3.2 Lokale Warteschlangen und Kanäle anlegen Im Konsolenstamm-Fenster öffnen wir den Ordner "Warteschlangen" (Abbildung 12). Dieser ist noch leer. Abbildung 12 Beim Klicken auf den Ordner „Erweitert" ergeben sich 6 Unterordner (siehe Abbildung 13). 8 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 13 Diese 6 Unterordner enthalten alle keine Objekte. Z.B. enthält der Ordner "Kanäle" keine Objekte (siehe Abbildung 14). Abbildung 14 9 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Die je 3 Warteschlangen und Kanäle können mittels der in Abbildung 15 gezeigten Windows-BatchDatei erzeugt werden. Dazu sind beide Dateien (Abbildung 15 und Abbildung 16) im gleichen Verzeichnis zu erstellen und anschließend die Batch-Datei zu starten. Aufgabe: Legen Sie unter Ihrem lokalen Queue Manager die drei lokalen Warteschlangen und drei Kanäle an. Achten Sie darauf, dass die Ziffernfolge "20" wieder durch Ihre Nummer Ihres PRAKT- oder PRAKAccounts auf Lucas ersetzt wird. @echo off title Define MQ definitions echo Ensure MQ Series is running echo strmqm PRAKT20.NACT strmqm PRAKT20.NACT echo. echo Load the MQ definitions for the QManager PRAKT20.NACT echo runmqsc "< MQadmvs.def > MQadmvs.out" runmqsc < MQadmvs.def > MQadmvs.out echo. :quit pause exit Abbildung 15 DEFINE QLOCAL('MQA1') REPLACE + TRIGDATA(PRAKT20.NACT.TO.MQA1) + TRIGGER + INITQ(SYSTEM.CHANNEL.INITQ) + USAGE(XMITQ) DEFINE QLOCAL('PRAKT20.NACT.REPLYQ') REPLACE + DEFPSIST(YES) + SHARE DEFINE QREMOTE('PRAKT20.NACT.REMOTEQ') REPLACE + RNAME('SYSTEM.CICS.BRIDGE.QUEUE') + RQMNAME('MQA1') DEFINE CHANNEL('PRAKT20.CLIENT') CHLTYPE(SVRCONN) TRPTYPE(TCP) + MCAUSER(' ') REPLACE DEFINE CHANNEL('PRAKT20.NACT.TO.MQA1') CHLTYPE(SDR) TRPTYPE(TCP) + XMITQ('MQA1') + CONNAME('139.18.4.36(1414)') + MCAUSER(' ') REPLACE DEFINE CHANNEL('MQA1.TO.PRAKT20.NACT') + CHLTYPE(RCVR) + TRPTYPE(TCP) + SEQWRAP(999999999) + MCAUSER(' ') REPLACE Abbildung 16 10 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Die erfolgreich angelegten Warteschlangen werden nach eventuell erfolgter Aktualisierung im Konsolenstamm-Fenster sichtbar (Abbildung 17). Abbildung 17 Abbildung 18 zeigt die ebenfalls erstellten und im Konsolenstamm-Fenster sichtbar gemachten Kanäle. Abbildung 18 11 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 4 Erstellen der MQSeries-Objekte für den Queue Manager MQA1 auf OS/390-Seite Nachdem alle MQ-Objekte auf der Windows-Seite installiert worden sind, müssen nun noch die MQSeries-Objekte auf der OS/390-Seite installiert werden. Zuerst verbinden wir uns mit dem OS/390-Server über einen TN3270-Klienten (3270 Emulator) und loggen uns wie gewohnt, beispielsweise unter "PRAKT20" und dem dazugehörigen Passwort, ein. Es öffnet sich das CUSTOMPAC MASTER APPLICATION MENU-Panel. In dieses geben wir "M" ein (Abbildung 19). CUSTOMPAC MASTER APPLICATION MENU OPTION ===> M P DB2 M SD BMR X SCROLL ===> PAGE PDF DB2 MQ SDSF BMR READ EXIT F1=HELP F7=UP - ISPF/Program Development Facility Perform DATABASE 2 interactive functions MQSeries System Display and Search Facility BookManager Read (Read Online Documentation) Terminate ISPF using list/log defaults F2=SPLIT F8=DOWN F3=END F9=SWAP F4=RETURN F10=LEFT Abbildung 19 12 F5=RFIND F11=RIGHT F6=RCHANGE F12=RETRIEVE Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Es erscheint das IBM MQSeries for OS/390 – Main Menu: IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 1 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . ____________ + Name . . . . . . . . . ________________________________________________ Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 20 In diesem Menu erstellen, konfigurieren und administrieren wir die MQSeries Objekte. Dazu stehen uns 7 Operationen (Action) zur Verfügung: Display Define Alter Delete Perform Start Stop – Anzeige der Objekteigenschaften – Definieren eines Objektes – Veränderung der Objekteigenschaften – Löschen eines Objektes – Ausführen einer bestimmten MQSeries-Operation – Start eines MQSeries-Objektes, wie z.B. eines Channels – Stopp eines MQSeries-Objektes, wie z.B. eines Channels Durch Eingabe der zugehörigen Nummer wird die jeweilige Aktion gestartet. 13 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Im Object type-Feld werden die Objekte, mit denen Operationen durchgeführt werden sollen, spezifiziert. Eine Auswahl dieser Objekte erhält man durch Drücken der F4-Taste: Select a Valid Object Type Object type . . . . . . . . . 2 Queue objects 1. QUEUE . . 2. QLOCAL. . 3. QREMOTE . 4. QALIAS. . 5. QMODEL. . Other objects 6. PROCESS . 7. NAMELIST. 8. MANAGER . 9. STGCLASS. 10. SYSTEM. . 11. SECURITY. F1=Help Any type Local Remote Alias Model Process Namelist Queue manager Storage class System function Security F2=Split F9=Swap Channel objects 12. CHANNEL . . . 13. CHLSENDER . . 14. CHLSERVER . . 15. CHLRECEIVER . 16. CHLREQUESTER. 17. CHLSVRCONN. . 18. CHLCLNTCONN . 19. CHLCLUSRCVR . 20. CHLCLUSSDR. . Cluster objects 21. CLUSQMGR. . . 22. CLUSCHL . . . 23. CLUSQ . . . . Any type Sender Server Receiver Requester Server-connection Client-connection Cluster-receiver Cluster-sender Queue manager Channel Queue F12=Cancel Abbildung 21 Die Auswahl der Objekte erfolgt ebenfalls durch Angabe einer Nummer, z.B. „2“ (s. Abbildung 21). Im Feld Name kann der Name des Objektes angegeben werden. Wenn ein Objekt erstellt werden soll, ist die Angabe eines Namens notwendig. Sonst kann durch Eingabe eines „∗“ auch eine Gesamtliste aller bereits erstellten Objekte angezeigt werden. Das Feld Like wird nur zum Erstellen von Objekten benötigt. Im unteren Bereich werden die Angaben des Queue Managers angezeigt. Connect to Queue Manager zeigt an, mit welchem Queue Manager man verbunden ist (hier MQA1). Target Queue Manager zeigt den Queue Manager an, auf dem bestimmte Operationen ausgeführt werden sollen (hier ebenfalls MQA1). Das kann der verbundene Queue Manager sein (connected) aber auch ein entfernter (remote). Das Feld Response wait time gibt an, in welcher Zeit der Target Queue Manager antworten soll. Möchte man diese verändern, betätigt man die F6-Taste. Es öffnet sich ein Panel, in dem sich die neue Response wait time eintippen läßt. Ein guter Wert ist 30. Nach dem Eintippen Eingabetaste betätigen. Hinweis: MQA1 ist der einzige Queue Manager, 14 der auf der OS/390-Seite läuft. Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Zuerst schauen wir uns an, welche Systemeinstellungen vorliegen. IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 1 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . SYSTEM + Name . . . . . . . . . * Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 22 Action ist gleich 1 (Display), Object Type ist gleich System; Name ist gleich ∗. Wenn dies nicht so ist, dann die entsprechenden Felder mit diesen Werten überschreiben. Die Eingabetaste führt Sie in den nächsten Sceen. Display a System Function Select function type, then press Enter to display details. Function type . . . . . . . 1 1. Distributed queueing 2. Threads 3. Page set usage Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F9=Swap F10=Messages F12=Cancel Abbildung 23 Geben Sie als Function type "1" ein und beenden Sie diese Aktion mit der Eingabetaste. 15 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Es werden nun die Systemeinstellungen des Queue Managers MQA1 angezeigt. Display a System Function .---------------------------------------------------------------------------. S | Display messages Row 1 of 11 | | | | | F | CSQX830I !MQA1 CSQXRDQM Channel initiator active | | CSQX845I !MQA1 CSQXRDQM TCP/IP system name is TCPIP | | CSQX846I !MQA1 CSQXRDQM TCP/IP listener started, for port number 1414 | | CSQX849I !MQA1 CSQXRDQM LU 6.2 listener not started | | CSQX831I !MQA1 CSQXRDQM 8 adapter subtasks started, 8 requested | | CSQX832I !MQA1 CSQXRDQM 5 dispatchers started, 5 requested | | CSQX840I !MQA1 CSQXRDQM 3 channel connections current, maximum 200 | | CSQX841I !MQA1 CSQXRDQM 2 channel connections active, maximum 200 | | CSQX842I !MQA1 CSQXRDQM 0 channel connections starting, | | 1 stopped, 0 retrying | | CSQ9022I !MQA1 CSQXCRPS ' DISPLAY DQM' NORMAL COMPLETION | | | | Command ===> ____________________________________________________________ | | F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap | | F12=Cancel | '---------------------------------------------------------------------------' Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F9=Swap F10=Messages F12=Cancel Abbildung 24 Sehen Sie sich die ersten drei Zeilen an. Diese sind besonders wichtig. Der Channel initiator muss aktiv sein, damit Channels senden können. Der Listener ist auf TCP/IP-Basis gesetzt, weil die Kommunikation zwischen den Queue Managern per TCP/IP durchgeführt werden soll. Es kann auch ein LU6.2 Listener aktiviert werden. Der TCP/IP Listener ist für den MQSeries Standard-Port 1414 gestartet worden. Nur wenn diese Einstellungen stimmen, dann funktioniert auch dieses Tutorial. Sollte in diesen drei Zeilen etwas anderes stehen, dann kontaktieren Sie bitte den Praktikumsbetreuer. Betätigen Sie die F3-Taste. Aufgabe: Prüfen Sie, ob der Queue-Manager MQA1 alte Objekte (Queues und Channels) enthält, deren Namen Ihre User-ID beinhalten. Wenn ja, dürfen und müssen Sie diese alten Objekte löschen. Aufgabe: Weisen Sie anhand von Screenshots nach, dass Sie alle alten Objekte wirklich gelöscht haben. Erzeugen Sie dazu einen Screenshot ähnlich Abbildung 25, der das Fehlen alter Queues nachweist. Erzeugen Sie weiterhin hinreichend viele Screenshots, die das Fehlen alter Channels nachweisen (Abbildung 26,Abbildung 27). Achten Sie darauf, dass die Screenshots nicht zu viel Speicherplatz in Anspruch nehmen. Am besten ist das JPEG-Format, das mit weniger als 90 KByte je Screenshot auskommt. Im Ausnahmefall ist auch das Bitmap-Format (< 250 KByte) möglich. 16 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 List Queues Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Name CICS01.INITQ MQA1.DEAD.QUEUE MQA1.DEFXMIT.QUEUE PRAKT14.NACT PRAKT14.NACT.REPLYQ PRAKT15.NACT PRAKT15.NACT.REPLYQ PRAKT16.NACT PRAKT16.NACT.REPLYQ PRAKT21.NACT PRAKT21.NACT.REPLYQ PRAKT47 PRAKT68.NACT PRAKT68.NACT.REPLYQ PRAK137 PRAK138 PRAK139 PRAK140 PRAK141 PRAK142 PRAK143 Row 1 of 75 4=Delete Type QLOCAL QLOCAL QLOCAL QLOCAL QREMOTE QLOCAL QREMOTE QLOCAL QREMOTE QLOCAL QREMOTE QLOCAL QLOCAL QREMOTE QLOCAL QLOCAL QLOCAL QLOCAL QLOCAL QLOCAL QLOCAL Warteschlangen PRAKT20* sind gelöscht Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F6=Clusinfo F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 25 List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ _ _ _ _ _ _ _ _ _ _ _ _ Name PRAKT16.NACT.WIN.OS PRAKT17.NACT.OS.WIN PRAKT17.NACT.WIN.OS PRAKT21.NACT.TO.MQA1 PRAKT35.NACT.MQA1.TO PRAKT35.NACT.TO.MQA1 PRAKT36.NACT.OS.WIN PRAKT37.NACT.OS.WIN PRAKT39.NACT.OS.WIN PRAKT39.NACT.WIN.OS PRAKT68.CLIENT PRAKT68.NACT.OS.WIN PRAKT68.NACT.WIN.OS Row 14 of 55 4=Delete Kanäle PRAKT20.* sind gelöscht 5=Perform Type CHLRECEIVER CHLSENDER CHLRECEIVER CHLRECEIVER CHLSENDER CHLRECEIVER CHLSENDER CHLSENDER CHLSENDER CHLRECEIVER CHLSVRCONN CHLSENDER CHLRECEIVER Status INACTIVE INACTIVE INACTIVE INACTIVE STOP INACTIVE STOP STOP STOP INACTIVE INACTIVE STOP INACTIVE Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 26 17 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ _ _ _ _ _ _ _ _ _ _ _ _ Name CSQ1.TO.MQA1 MQA1.TO.CSQ1 MQA1.TO.MQA2 MQA1.TO.PRAKT04.NACT MQA1.TO.PRAKT21.NACT MQA2.TO.MQA1 PRAKT04.NACT.TO.MQA1 PRAKT116.NACT.OS.WIN PRAKT116.NACT.WIN.OS PRAKT15.NACT.OS.WIN PRAKT15.NACT.WIN.OS PRAKT16.NACT.OS.WIN PRAKT16.NACT.WIN.OS Row 1 of 54 4=Delete Kanäle MQA1.*.PRAKT20.* sind gelöscht 5=Perform Type CHLRECEIVER CHLSENDER CHLSENDER CHLSENDER CHLSENDER CHLRECEIVER CHLRECEIVER CHLSENDER CHLRECEIVER CHLSENDER CHLRECEIVER CHLSENDER CHLRECEIVER Status INACTIVE INACTIVE RUN STOP STOP RUN INACTIVE INACTIVE INACTIVE STOP INACTIVE STOP INACTIVE Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 27 Aufgabe: Erstellen Sie - so wie nachfolgend beschrieben – die Warteschlange und die beiden Kanäle. Ersetzen Sie "20 " überall durch Ihre PRAKT- oder PRAK-Nr. 4.1 Transmission Queue auf MQA1 erstellen Wir erstellen nun die Transmission Queue “PRAKT20.NACT”. Die Transmission Queue auf der OS/390-Seite muss den selben Namen wie der Remote Queue Manager besitzen! 18 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 2 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . QLOCAL + Name . . . . . . . . . PRAKT20.NACT Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 28 Eingabe von “2” im Feld Action Eingabe von “QLOCAL” im Feld Object type Eingabe von “PRAKT20.NACT” im Feld Name Bestätigung mit der Eingabetaste. Define a Local Queue Complete fields, then press F8 for further fields, or Enter to define queue. More: Queue name . . . . . . . . . PRAKT20.NACT Description . . . . . . . . . ________________________________ ________________________________ Put enabled . Get enabled . Usage . . . . Storage class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Y Y=Yes,N=No Y Y=Yes,N=No X N=Normal,X=XmitQ DEFAULT Command ===> __________________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 29 19 + Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Es kann eine Beschreibung eingegeben werden (Description). Put enabled muss “YES” lauten, somit können Nachrichten in dieser Queue abgelegt werden. Get enabled muss “YES” lauten, somit kann diese Queue Nachrichten an einen Remote Queue Manager versenden. Usage muss “X” lauten, damit wird die Transmission Queue definiert Storage Class muss “DEFAULT” lauten; MQA1 hat nur diese Storage Class. Mit der F8-Taste gelangen wir auf den nächsten Bildschirm zur Einstellung der Transmission Queue. Die Einstellungen sollten so aussehen: Define a Local Queue Press F7 or F8 to see other fields, or Enter to define queue. More: Default persistence . . . Default priority . . . . Message delivery sequence Permit shared access . . Default share option . . Index type . . . . . . . Maximum queue depth . . . Maximum message length . Retention interval . . . . . . . . . . . . . . . . . . . . . - + N Y=Yes,N=No 0 0 - 9 F P=Priority,F=FIFO Y Y=Yes,N=No S E=Exclusive,S=Shared N N=None,M=MsgId,C=CorrelId,T=MsgToken 999999999 0 - 999999999 4194304 0 - 4194304 999999999 0 - 999999999 hours Cluster name . . . . . . . . ________________________________________________ Cluster namelist name . . . . ________________________________________________ Default bind . . . . . . . . O O=Open,N=Notfixed Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 30 Message delivery sequence Permit shared access Default share option auf “F” setzen auf “Y” setzen, um shared access zu erlauben. auf “S” setzen, um die Eigenschaft des shared access einzustellen. Mit der F8-Taste den nächsten Bildschirm aufrufen. In diesem können die Trigger Daten und die Initiation Queue definiert werden (siehe Abbildung 31). 20 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Display a Local Queue Press F7 or F8 to see other fields, or Enter to refresh details. More: - + Trigger Definition Trigger type Trigger Trigger Trigger Trigger . . . . . . . : F set . . . . . . message priority depth . . . . . data . . . . . . : : : : F=First,E=Every,D=Depth,N=None N Y=Yes,N=No 0 0 - 9 1 1 - 999999999 MQA1.TO.PRAKT20.NACT Process name . . . . . . : Initiation queue . . . . : SYSTEM.CHANNEL.INITQ Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F6=Clusinfo F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 31 Wir definieren die Initiation Queue mit dem Namen „SYSTEM.CHANNEL.INITQ“. Mit der F8-Taste gelangen wir auf den nächsten Bildschirm, in dem wir keine Einstellungen vornehmen: Define a Local Queue Press F7 or F8 to see other fields, or Enter to define queue. More: - + Event Control Queue full . . . . . . . . E E=Enabled,D=Disabled Upper queue depth . . . . D E=Enabled,D=Disabled Threshold . . . . . . . . 80 0 - 100 % Lower queue depth . . . . D E=Enabled,D=Disabled Threshold . . . . . . . . 40 0 - 100 % Service interval . . . . . N H=High,O=OK,N=None Interval . . . . . . . . . 999999999 0 - 999999999 milliseconds Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 32 Wir betätigen noch einmal die F8-Taste. 21 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Folgender Bildschirm erscheint: Define a Local Queue Press F7 to see previous fields, or Enter to define queue. More: - Backout Reporting Backout threshold . . . . 0 0=No backout reporting Harden backout counter . . Y Y=Yes,N=No Backout requeue name . . . ________________________________________________ Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 33 Harden Backout Counter auf „Y“ setzen, somit kann im Falle eines Problems die Queue zurückgesetzt werden (back out). Nun sind die Defnitionen für die Transmission Queue abgeschlossen und wir bestätigen mit der Eingabetaste. Folgender Bildschirm wird angezeigt: Define a Local Queue Complete fields, then press F8 for further fields, or Enter to define queue. More: + Queue name . . . . . . . . . PRAKT20.NACT Description . . . . . . . . . ________________________________ ________________________________ Put enabled . Get enabled . Usage . . . . Storage class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Y Y=Yes,N=No Y Y=Yes,N=No X N=Normal,X=XmitQ DEFAULT CSQ9022I !MQA1 CSQMMSGP ' DEFINE QLOCAL' NORMAL COMPLETION Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 34 Die Nachricht besagt, dass die Definition erfolgreich war. Wir verlassen das Menu mit F12. 22 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 4.2 Kanäle auf MQA1 erstellen Zuerst definieren wir den Sender Channel. Dazu im Feld Object type „CHLSENDER“ eingeben (F4 13). Der Name des Sender Channels lautet „MQA1.TO.PRAKT20.NACT“ (s. Abbildung 35). IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 2 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . CHLSENDER + Name . . . . . . . . . MQA1.TO.PRAKT20.NACT Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 35 Mit Eingabetaste bestätigen. Im nächsten Panel werden die Eigenschaften des Sender Channels eingestellt. Für die Übertragung der Nachrichten wird das TCP/IP-Protokoll benutzt. Im Feld Transport type geben wir deswegen ein “T“ für das TCP/IP-Protokoll ein. Im das Feld Connection name ist die IP-Adresse Ihres Windows-Rechners einzutragen. In Klammern kann der für die Kommunikation genutzte Port folgen. Wird kein Port angegeben, wird der Port 1414 angenommen. Sender Channel „MQA1.TO.PRAKT20.NACT“ verschickt Nachrichten, die auf der Transmission Queue „PRAKT20.NACT“ zum Versenden abgelegt sind. 23 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Define a Sender Channel Complete fields, then press F8 for further fields, or Enter to define channel. More: + Channel name . . . . . . . . MQA1.TO.PRAKT20.NACT Description . . . . . . . . . ________________________________ ________________________________ Transport type Connection name LU6.2 mode name LU6.2 TP name . . . . . . . . . Transmission queue . . . . . . . . . . . . . . . . . . . . T L=LU6.2,T=TCP/IP 139.18.4.54________________________________ ________ ________________________________ ________________________________ . . . . . PRAKT20.NACT____________________________________ Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F12=Cancel Abbildung 36 Mit der Eingabetaste bestätigen. Nach Bestätigung F12-Taste drücken. Wir definieren nun den Receiver Channel: IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 2 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . CHLRECEIVER + Name . . . . . . . . . PRAKT20.NACT.TO.MQA1 Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 37 Eingabetaste drücken. 24 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Das nächste Panel wiederum mit der Eingabetaste bestätigen. Es erscheint die Bestätigung der Definiton des Channels und wir betätigen die F12-Taste. Damit sind die Objekt-Definitionen auf der OS/390-Seite beendet. 5 JAVA-Anwendung vorbereiten Die Bildschirmmaske für die von der NACT-Transaktion zurückgegebenen Daten erzeugt JavaProgrammcode, der in diesem Kapitel heruntergeladen werden soll. Anschließend sollen die für die Übersetzung des JAVA-Codes notwendigen Pfade gesetzt werden. Zuletzt wird der JAVA-Code dann in ein ausführbares JAVA-Programm übersetzt. Aufgabe: Laden Sie sich – wie nachfolgend behandelt – die Java-Anwendung herunter. Entpacken Sie diese, setzen Sie alle notwendigen Pfade und übersetzen Sie. 5.1 Java-Programmcode herunterladen und entpacken Der Java-Programmcode befindet sich zum Herunterladen auf einem Leipziger Server. Laden Sie die Datei Tutor 12_XP.zip mit den folgenden Zugangsdaten in Ihren Eigene Dateien-Bereich herunter: Host: Port: Benutzername: entferntes Verzeichnis: 139.18.12.179 21 tutor tools Das Passwort erhalten Sie von Ihrem Tutor. Beachten Sie, dass das Herunterladen manchmal nur im passiven Transfermodus möglich ist. Entpacken Sie anschließend die heruntergeladene Datei Tutor 12_XP.zip mit dem Windows XPExtrahier-Assistent, mit dem Total Commander oder mit einer anderen geeigneten Software. 5.2 Umgebungsvariablen Nachdem MQ korrekt installiert wurde (s. Tutorial 11), befinden sich nun im Verzeichnis C:\Programme\IBM\Source\C51Y1ML\MSI\Program Files\IBM\WebSphere MQ\Java\lib zwei Dateien, die in den Classpath eingebunden werden müssen: connector.jar com.ibm.mq.jar Start Systemsteuerung eventuell zur klassischen Ansicht wechseln Doppelklick auf System Klick auf Erweitert auf Umgebungsvariablen ein Klick Klick auf Neu im Fenster Benutzervariablen Als Name der Variablen ist natürlich CLASSPATH einzutragen. Und als Wert der Variablen C:\Programme\IBM\Source\C51Y1ML\MSI\Program Files\IBM\WebSphere MQ\Java\lib\connector.jar; C:\Programme\IBM\Source\C51Y1ML\MSI\Program Files\IBM\WebSphere MQ\Java\lib\com.ibm.mq.jar;. Der Punkt "." am Ende der Variablen ist wichtig!!! Denn der Punkt "." steht für ihr aktuelles Verzeichnis. Ohne diese Sequenz würde der Java-Kompiler Klassen (= .class-Dateien) nicht finden, 25 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 die sich neben der mit javac <Hauptklasse> aufgerufenen Hauptklasse noch in ihrem aktuellen Verzeichnis befinden. Betätigen Sie dreimal den Button OK (einmal je Fenster) und schließen Sie das Fenster Systemsteuerung. Natürlich können die jar-Dateien auch nach C:\j2sdk1.4.2_05\jre\lib\ext kopiert werden, um automatisch eingebunden zu werden. Vergessen Sie aber auch dann nicht, den Punkt in den CLASSPATH aufzunehmen. 5.3 JAVA-Programme übersetzen Um den gerade eingestellten Classpath zu aktivieren, sollte ein eventuell noch offenes DOS-Fenster geschlossen sowie ein neues geöffnet werden. Bevor das JAVA-Programm übersetzt wird, sollte überprüft werden, ob die Classpath-Variable wirklich richtig gesetzt ist. Hierzu geben wir in dem neu geöffneten DOS-Fenster set classpath ein: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Dokumente und Einstellungen\zOS u. OS390>set classpath CLASSPATH=C:\Programme\IBM\Source\C51Y1ML\MSI\Program Files\IBM\WebSphere MQ\Jav a\lib\connector.jar;C:\Programme\IBM\Source\C51Y1ML\MSI\Program Files\IBM\WebSph ere MQ\Java\lib\com.ibm.mq.jar;. C:\Dokumente und Einstellungen\zOS u. OS390> Abbildung 38 Haben Sie nun alle jar-Dateien in den Ordner C:\j2sdk1.4.2_05\jre\lib\ext kopiert und nur den Punkt in den CLASSPATH aufgenommen, dann wird die Ausgabe natürlich nur so lauten: C:\>set classpath Classpath=. C:\> Abbildung 39 Wir benutzen einen JAVA-Klienten, der die Präsentationslogik für unseren CICS-Zugriff enthält. Der entsprechende JAVA-Quellcode befindet sich in der Datei MQClient.java sowie einer Reihe weiterer ∗.java-Dateien. Wir aktivieren das schon geöffnete DOS-Fenster und wechseln in dieses Verzeichnis, das die Datei MQClient.java enthält. In diesem Verzeichnis befinden sich ein Unterverzeichnis („images“) sowie acht Dateien (siehe Abbildung 40): 26 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 C:\Dokumente und Einstellungen\Übung\Eigene Dateien\JavaProgram>dir Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: F033-0747 Verzeichnis von C:\Dokumente und Einstellungen\Übung\Eigene Dateien\JavaProgram 18.12.2004 18.12.2004 28.11.2004 28.11.2004 28.11.2004 28.11.2004 18.12.2004 28.11.2004 29.11.2004 01.12.2004 01.12.2004 11:12 <DIR> . 11:12 <DIR> .. 15:59 1.466 AccountHistory.java 15:59 1.339 AccountHistoryTableModel.java 15:59 5.393 AccountRecord.java 15:59 685 DisplayField.java 11:12 <DIR> images 17:26 28.342 MQClient.java 23:40 9.364 MQCommunicator.java 15:50 190 starting.bat 15:52 561 starting.sh 8 Datei(en) 47.340 Bytes 3 Verzeichnis(se), 10.239.729.664 Bytes frei Abbildung 40 Als nächstes werden die ∗.java-Programme in diesem Verzeichnis in Java Bytecode übersetzt. Dies geschieht mit der Eingabe des folgenden Kommandos im DOS-Eingabefenster: javac –g MQClient.java Wenn wir uns nun mit dem Kommando dir das Verzeichnis mit unseren Java-Dateien ansehen, stellen wir fest, dass für jede ∗.java-Datei mindestens eine ∗.class-Datei existiert (siehe Abbildung 41): C:\Dokumente und Einstellungen\Übung\Eigene Dateien\JavaProgram>dir Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: F033-0747 Verzeichnis von C:\Dokumente und Einstellungen\Übung\Eigene Dateien\JavaProgram 18.12.2004 18.12.2004 18.12.2004 28.11.2004 18.12.2004 28.11.2004 18.12.2004 28.11.2004 18.12.2004 28.11.2004 18.12.2004 18.12.2004 18.12.2004 18.12.2004 18.12.2004 18.12.2004 18.12.2004 18.12.2004 28.11.2004 18.12.2004 29.11.2004 01.12.2004 01.12.2004 11:21 <DIR> . 11:21 <DIR> .. 11:21 1.556 AccountHistory.class 15:59 1.466 AccountHistory.java 11:21 1.545 AccountHistoryTableModel.class 15:59 1.339 AccountHistoryTableModel.java 11:21 4.504 AccountRecord.class 15:59 5.393 AccountRecord.java 11:21 678 DisplayField.class 15:59 685 DisplayField.java 11:12 <DIR> images 11:21 582 MQClient$1.class 11:21 617 MQClient$2.class 11:21 617 MQClient$3.class 11:21 616 MQClient$4.class 11:21 621 MQClient$5.class 11:21 699 MQClient$6.class 11:21 20.946 MQClient.class 17:26 28.342 MQClient.java 11:21 6.738 MQCommunicator.class 23:40 9.364 MQCommunicator.java 15:50 190 starting.bat 15:52 561 starting.sh 20 Datei(en) 87.059 Bytes 3 Verzeichnis(se), 10.239.619.072 Bytes frei Abbildung 41 27 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 6 Queue Manager und Kanäle starten Aufgabe: Starten Sie – wie in diesem Kapitel beschrieben – alle Objekte von MQ auf Windows-Seite; zuerst den Queue Manager und anschließend den Sende-Kanal. Aufgabe: Starten Sie anschließend Ihren Sende-Kanal auf OS/390-Seite. 6.1 Starten und Aktivieren aller Objekte des Queue Managers PRAKT20.NACT auf Windows XP-Seite Wir wechseln in den MQ-Explorer. Der Queue Manager muss gestartet werden. Dazu mit der rechten Maustaste auf Ihren Queue-Manager PRAKT20.NACT klicken und „Starten“ auswählen (Abbildung 42). Abbildung 42 Es werden die drei Queues (Warteschlangen) und die drei Kanäle, die Sie mit Hilfe des Skriptes step2.cmd definiert hatten, angezeigt (Abbildung 43 und Abbildung 44). 28 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 43 Abbildung 44 29 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Wir müssen nun noch den Listener / das Empfangsprogramm definieren und starten. Wir öffnen die MQSeries Services mit einem rechten Mausklick auf das MQSeries-Taskleistensymbol und einem anschließenden Klick auf "WebSphere MQ-Services" (Abbildung 45). Abbildung 45 Klicken Sie mit der rechten Maustaste auf Ihren Queue Manager. Wählen Sie dann Neu aus und klicken Sie anschließend auf Empfangsprogramm (Abbildung 46). Abbildung 46 In der Registerkarte "Parameter" muß das Protokoll TCP sowie der Port (Anschluss) 1414 eingestellt sein. Öffnen Sie die Registerkarte „Allgemein“. Der Status ist „Gestoppt“ – Starten Sie (Abbildung 47) ! 30 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 47 Der Status wechselt auf „Aktiv“. Verlassen Sie den Dialog mit Klick auf „OK“. Alle Services des Queue Managers sind nun gestartet. Wir starten nun den Sender Channel und wechseln dazu in den MQ Explorer zurück. Überprüfen Sie noch einmal ihre IP-Einstellungen des Channels. Wir klicken mit der rechten Maustaste auf den Sender Channel „PRAKT20.NACT.TO.MQA1“ und wählen „Starten“ aus. Es erscheint eine Nachricht, dass die Anforderung angenommen wurde. Der Sender Channel wechselt in den Aktiv-Status, dies ist zu erkennen an dem grünen Pfeil vor dem Channel-Namen. 31 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 48 Damit haben wir den MQSeries-Klienten erfolgreich gestartet. 32 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 6.2 Starten und Aktivieren aller Objekte des MQSeries Queue Managers MQA1 auf OS/390-Seite Die Eigenschaften der angelegten MQSeries-Objekte auf OS/390-Seite können vor einem Start bei Bedarf noch geändert werden. Ein Objekt kann wie folgt beschrieben abgeändert werden: Öffnen Sie das MQSeries Main Menu (Abbildung 49). Wählen Sie „1“ für Display, für den Object type „CHANNEL“ und Name „MQA1∗“ und drücken Sie die Eingabetaste. IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 1 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . CHANNEL + Name . . . . . . . . . MQA1* Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 49 33 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 List Channels Row 1 of 3 Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ 3 _ 4=Delete 5=Perform Name Type MQA1.TO.CSQ1 CHLSENDER MQA1.TO.PRAKT20.NACT CHLSENDER MQA1.TO.PRAKT21.NACT CHLSENDER ******** End of list ******** Status INACTIVE STOP STOP Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 50 Geben Sie eine "3" vor Ihrem Sender Channel ein und bestätigen Sie mit der Eingabetaste. Alter a Sender Channel Complete fields, then press F8 for further fields, or Enter to alter channel. More: + Channel name . . . . . . . : MQA1.TO.PRAKT20.NACT Description . . . . . . . . . Transport type Connection name LU6.2 mode name LU6.2 TP name . . . . . . . . . Transmission queue . . . . . . . . . . . . . . . . . . . . T L=LU6.2,T=TCP/IP 139.18.4.54 ________ ________________________________ ________________________________ . . . . . PRAKT20.NACT Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cance Abbildung 51 Im sich öffnenden Panel können Sie noch einmal die eingestellte IP-Adresse überprüfen. Bestätigen Sie mit der Eingabetaste. Die Ausschrift ' ALTER CHANNEL' NORMAL COMPLETION besagt, dass die Änderung des Kanals problemlos abgeschlossen wurde. Drücken Sie die F12-Taste (Cancel), um diesen Screen zu verlassen. 34 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Starten Sie nun den Sender Channel, indem Sie eine ”6” vor den Sender Channel Namen schreiben und mit der Eingabetaste 2-mal bestätigen (Abbildung 52). List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ 6 _ 4=Delete Row 1 of 3 5=Perform Name Type MQA1.TO.CSQ1 CHLSENDER MQA1.TO.PRAKT20.NACT CHLSENDER MQA1.TO.PRAKT21.NACT CHLSENDER ******** End of list ******** Status INACTIVE STOP STOP Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 52 Start a Channel Press Enter to confirm that the channel is to be started. Channel name . . . . . . . : MQA1.TO.PRAKT20.NACT Channel type . . . . . . . : CHLSENDER Description . . . . . . . : CSQ9022I !MQA1 CSQXCRPS ' START CHANNEL' NORMAL COMPLETION Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F9=Swap F10=Messages F12=Cancel Abbildung 53 Alles verlief normal und fehlerfrei. Betätigen Sie die Taste F12 und einmal die F5-Taste, um das Panel zu aktualisieren. 35 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Der Status des Channels wurde von "STOP" auf "RUN" verändert. Der Sender Channel ist nun aktiviert. List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ _ _ 4=Delete Row 1 of 3 5=Perform Name Type MQA1.TO.CSQ1 CHLSENDER MQA1.TO.PRAKT20.NACT CHLSENDER MQA1.TO.PRAKT21.NACT CHLSENDER ******** End of list ******** Status INACTIVE RUN STOP Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 54 Damit sind die Queue Manager beidseitig miteinander verbunden. Sie können sich davon noch einmal überzeugen, indem Sie, wie in der Abbildung 54 dargestellt, sich den Status beider Kanäle ansehen. Beide Kanäle, der Sender MQA1.TO.PRAKT20.NACT sowie der Empfänger PRAKT20.NACT.TO.MQA1 haben jetzt den Status RUN. Diese Überprüfung läßt sich auch auf der Windows-Seite durchführen. Dazu sind die drei Kanäle im MQ-Explorer anzuzeigen und zu aktualisieren. Beide Kanäle, der Sender und der Empfänger, haben jetzt einen grünen Pfeil (Abbildung 55). 36 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 55 7 Starten der Java-Anwendung Aufgabe: Greifen Sie über MQ und die Java-Anwendung auf Ihr eigenes Konto "100xx" oder "10xxx" zu. Haben Sie beispielsweise den Account PRAK159, dann greifen Sie über MQ und die Java-Anwendung auf das Konto "10159" zu, welches Sie ja selbst angelegt oder modifiziert haben. Erzeugen Sie von diesem Vorgang die folgenden Nachweis-Screenshots: 1) entsprechend der Abbildung 60, der die Ausgabe der NACT-Transaktion enthält 2) entsprechend der Abbildung 56, der zeigt, dass alle Windows MQ-Kanäle aktiv sind 3) entsprechend der Abbildung 57 Alle diese Screenshots müssen natürlich statt der Accounts-Nr. "20" Ihre Account-Nr. nachweisen, und Ihr Screenshot entsprechend der Abbildung 60 muss natürlich Ihren Vor- und Zunamen sowie alle anderen Daten Ihres eigenen NACT-Kontos zeigen. Achten Sie darauf, dass die Screenshots nicht zu viel Speicherplatz in Anspruch nehmen. Am besten ist das JPEG-Format, das mit weniger als 90 KByte auskommt. Im Ausnahmefall ist auch das BitmapFormat (< 250 KByte) möglich. Aufgabe: Schicken Sie alle sechs Screenshots ihrem Tutor per E-Mail zu. Und zwar soll jeder Screenshot unverpackt als Anhang an die Mail angefügt werden. 37 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 56 Abbildung 57 Um die JAVA-Anwendung zu starten, muss die Datei starting.bat angepasst werden. Passen Sie diese Datei nun wie folgt an: java MQClient <<IP-Adresse des Win2k-Rechners>> <<ClientServerConnection>> <<Queue Manager>> <<Remote Queue>> <<Reply-To-Queue>> 38 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Beispielsweise so: java MQClient 139.18.4.54 PRAKT20.CLIENT PRAKT20.NACT PRAKT20.NACT.REMOTEQ PRAKT20.NACT.REPLYQ Der Editor kann nun geschlossen und die modifizierte Datei abgespeichert werden. Die Java-Anwendung wird nun durch Doppelklick auf die gerade angepasste Datei starting.bat gestartet. Es erscheint der „KanDoIT Account Enquiry Client“ (Abbildung 58) . Das Java-Programm des Klienten holt sich aus dem OS/390 CICS COMMAREA-Bereich eine Map. Dies ist die gleiche Information, wie sie beim Aufruf der NACT-Transaktion mit BMS in CICS erzeugt wird; das Aussehen ist anders und wird von dem Java-Programm auf dem Klienten gestaltet. Abbildung 58 39 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Abbildung 59 Wir geben eine gültige Account-Nr. ein, dann die Maus auf das Eingabesymbol bewegen (es ändert leicht seine Form) und mit der linken Maustaste klicken. Abbildung 60 40 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Die in dem OS/390 VSAM-Dataset gespeicherten Daten werden wiedergegeben (s. Abbildung 60). Im sich zum Start der Java-Anwendung geöffneten DOS-Fenster stehen ebenfalls diese Nachrichten in der Rohform. Wir schliessen die Java-Anwendung (Abbildung 61). Abbildung 61 Jetzt müssen wir die Anwendung klientenseitig und serverseitig herunterfahren ( sehr wichtig !!! ). 41 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 8 Shutdown 8.1 Sender Channel auf OS/390 stoppen IBM MQSeries for OS/390 - Main Menu Complete fields. Then press Enter. Action . . . . . . . . 1 1. 2. 3. 4. Display Define Alter Delete 5. Perform 6. Start 7. Stop Object type . . . . . CHANNEL + Name . . . . . . . . . MQA1* Like . . . . . . . . . ________________________________________________ Connect to queue manager . . . . . . : MQA1 Target queue manager : MQA1 Response wait time . : 30 seconds (C) Copyright IBM Corporation 1993,1999. All rights reserved. Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F4=Prompt F6=QueueMgr F9=Swap F10=Messages F12=Cancel Abbildung 62 Betätigen Sie die Eingabetaste. 42 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop 4=Delete Row 1 of 3 5=Perform Name Type _ MQA1.TO.CSQ1 CHLSENDER 7 MQA1.TO.PRAKT20.NACT CHLSENDER _ MQA1.TO.PRAKT21.NACT CHLSENDER ******** End of list ******** Command ===> F1=Help F2=Split F3=Exit F9=Swap F10=Messages F11=Status F5=Refresh F12=Cancel F7=Bkwd Status INACTIVE RUN STOP F8=Fwd Abbildung 63 Geben Sie eine "7" (einschließlich Eingabetaste) vor dem Sender Channel Namen ein, um diesen zu stoppen. Stop a Channel Select stop mode, then press Enter to stop channel. Channel name . . . . . . . : MQA1.TO.PRAKT20.NACT Channel type . . . . . . . : CHLSENDER Description . . . . . . . : Stop mode . . . . . . . . . 1 1. Quiesce 2. Force Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F9=Swap F10=Messages F12=Cancel Abbildung 64 Hier ist eine "1"einzugeben (inclusive Eingabetaste). 43 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 Stop a Channel Select stop mode, then press Enter to stop channel. Channel name . . . . . . . : MQA1.TO.PRAKT20.NACT Channel type . . . . . . . : CHLSENDER Description . . . . . . . : Stop mode . . . . . . . . . 1 1. Quiesce 2. Force CSQ9022I !MQA1 CSQXCRPS ' STOP CHANNEL' NORMAL COMPLETION Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F9=Swap F10=Messages F12=Cancel Abbildung 65 Damit ist das Herunterfahren auf der OS/390-Seite abgeschlossen. Betätigen Sie die F12-Taste. List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ _ _ 4=Delete Row 1 of 3 5=Perform Name Type MQA1.TO.CSQ1 CHLSENDER MQA1.TO.PRAKT20.NACT CHLSENDER MQA1.TO.PRAKT21.NACT CHLSENDER ******** End of list ******** Status INACTIVE STOP STOP Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 66 Die F5-Taste bewirkt einen Refresh. Danach wird MQA1.TO.PRAKT21.NACT mit dem Status "Stop" angezeigt (Abbildung 66). Der Sender Channel ist gestoppt. Zur Bestätigung können wir uns die Kanäle im MQ Explorer nach dessen Aktualisierung ansehen. Hier ist der grüne Pfeil vor "MQA1.TO.PRAKT20.NACT" nicht mehr vorhanden. 44 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 8.2 Sender Channel auf Windows stoppen Wir klicken mit rechts auf den Sender Channel und wählen "Stoppen..." aus (Abbildung 67). Abbildung 67 Der grüne Pfeil ändert sich in einen roten Pfeil. Dass dieser Kanal nun gestoppt ist, können wir uns wieder auf der OS/390-Seite bestätigen lassen (Abbildung 68). Der ehemalige Status RUN wurde auf INACTIVE geändert. Um die Channel-Liste zu aktualisieren, muß eventuell noch die F5-Taste betätigt werden. List Channels Type action codes. Then press Enter. 1=Display 2=Define like 3=Alter 6=Start 7=Stop _ _ 4=Delete Row 1 of 3 5=Perform Name Type PRAKT20.NACT.TO.MQA1 CHLRECEIVER PRAKT20.NACT.WIN.OS CHLRECEIVER ******** End of list ******** Status INACTIVE INACTIVE Command ===> __________________________________________________________________ F1=Help F2=Split F3=Exit F5=Refresh F7=Bkwd F8=Fwd F9=Swap F10=Messages F11=Status F12=Cancel Abbildung 68 45 Tutorial 13 (OS/390 2.7) - v03-2006-07-21 8.3 Windows XP MQ Queue Manager herunterfahren Queue Manager = PRAKT20.NACT wählen Rechtsklick und “Stoppen” (Abbildung 69) “Gesteuert” bestätigen. Abbildung 69 Der Queue Manager ist nun gestoppt, erkennbar am roten Pfeil vor dem Queue Manager-Namen. Wir schließen die OS/390-Sitzung, loggen uns aus dem S/390-Rechner aus. Auf dem Windows-Rechner können nun die MQ-Services sowie der MQ-Explorer beendet werden. 46