State of the Art 2008 Lattwein GmbH Heinz Peter Maassen 1 Agenda SOA – SOAP – Webservices Who am I ? CPGXML Performance Messung mit JMeter z/VSE – Tipps Host on Demand 2 SOA – SOAP – WebServices Was ist SOA ? Serviceorientierte Architektur (SOA), service oriented architecture, dienstorientierte Architektur. SOA ist eine Methode, um vorhandene DV Komponenten wie Programme, Datenbanken, Server, WebSites u.a. so zusammenzufassen, dass diese anderen Abteilungen oder Kunden zur Verfügung gestellt werden können. 3 SOA – SOAP – WebServices Sicht vom Programmierer: Alles in einem Guss ist kein dienstorientiertes Programm! Früher Heute GUI 3270 3270 Input Logik 3270 Output Logik CPGXML GUI Browser 4 SOA SOA sollte folgende Merkmale haben: Ein Dienst ist in sich abgeschlossen und kann eigenständig genutzt werden. Dienste sind in einem Netzwerk verfügbar. Jeder Dienst hat eine veröffentlichte Schnittstelle. Für die Nutzung reicht es, die Schnittstelle zu kennen. Kenntnisse über die Details der Implementierung sind hingegen nicht erforderlich. Die Benutzung von Diensten ist Plattform unabhängig, d.h. Anbieter und Nutzer eines Dienstes können in unterschiedlichen Programmiersprachen auf verschiedenen Plattformen realisiert sein. 5 Ziele von SOAP Erweiterbarkeit Einfachheit Einsatz auf verteilten Systemen, auch durch Das Rad nicht neu zu erfinden, sondern aktuelle Standards (HTTP und XML) zu nutzen Firewalls hindurch 6 Was ist ein Web Service ? Web Services sind aufrufbare Dienste im Internet. In Web Services sind Kommunikation und Methode standardisiert. Web Services sind registriert. Sie werden verwendet um einen Datenaustausch zwischen Programmen auf verschiedensten Rechnern auszuführen. Verwenden intern meist XML Format und HTTP Protokoll. * Siehe Definition von SOA ! 7 WebService: Beispiele Beispiele für Webservices: eBay Price Watcher Checks current bid price of an eBay auction. Currency Exchange Rate Exchange rate between any two currencies Domain Name Checker Checks whether a domain name is available BabelFish Interface for AltaVista's Babelfish service. FedEx Tracker Access to FedEx Tracking information SOAP Web Search SOAP Interface to major search engines Text-To-Speech (TTS) A Text-To-Speech (TTS) web service. Airline Fare Checker Returns airfare/flight information. German Bank Code Lookup (BLZ) Lookups German bank codes for name, city and zipcode Stock Quote Stock quote service which actually provides more than just quote. Und viele mehr ... siehe Internet. 8 SOAP Beispiel: Onlineshop Ein Kunde möchte in einem Onlineshop Artikel bestellen. Der Onlineshop ist in einen Applikationsserver realisiert. Dieser Applikationsserver überprüft über den SOAP Web Service des Servers A, ob die angegebene Adresse gültig ist, verifiziert über den SOAP-Dienst B die Kreditkartennummer, ermittelt über den SOAP-Dienst C die für das jeweilige Land zu berechnenden Steuern (Umsatzsteuer, Luxussteuer, ...), erfragt beim SOAP-Dienst D tagesaktuelle Währungsumrechnungskurse, um den Endpreis korrekt berechnen zu können und zeigt dem Benutzer alle Ergebnisse gesammelt im Webbrowser an. Wenig Aufwand, wenn schon Funktionsmodule = Dienstmodule existieren. 9 SOAP Beispiel: Onlineshop Web Applications-Server A Firewall Intranet/ Internet B Dienst A = Adresse prüfen C Dienst B = Kreditkarte prüfen D Dienst C = Steuern ermitteln Dienst D = Umrechnungskurs 10 SOAP und CPG5 SOAP und WebServices können einfach mit CPGXML auf z/VSE zugreifen und bestehende Anwendungen implementieren. Der Host wird als Server Komponente in die SOAP Anwendung eingebunden. z/VSE Linux/ Windows SOAP CPGXML Anwendung Web Service Windows, A Linux, ... SOAP-XML 11 Web Services und Lattwein z/VSE als Webservice Dienst Provider wurde von Lattwein für Kapferer realisiert. z/VSE als Webservice Client wurde parallel von Lattwein für Wessels und Müller entwickelt. 12 z/VSE als Webservice Provider z/VSE Der WebService Kabis nimmt Bestellungen von Apotheken entgegen entgegen oder gibt Auskunft über die Verfügbarkeit von Medikamenten. CPGXML WebService KabisWS 13 z/VSE als Webservice Client Aus mehreren Anwendungen können Bestellungen über TecCom erfolgen. z/VSE spricht über TCP/IP den TecCom Client an, der über WebServices bei den verschiedenen Lieferanten Bestellungen auslöst. Wessels z/VSE TecCom Client TecCom stellt einen zentralen Bestellservice für die Automobil Großhändler zur Verfügung. www.teccom.de WebService TecCom Lieferanten wie z.B. Hella, Bosch .. 14 Who Am I ? Einer unserer Kunden will Drucker nicht nach Terminal Namen sondern über die IP-Adresse zuordnen. Ein anderer Kunde möchte aus einer 3270 Anwendung - PC Programme, wie MS-Word oder Acrobat Reader, mit einer vom Host festgelegten Datei auf seiner Workstation starten. 15 Who Am I ? Manchmal wäre es schön, die IPAdresse der Telnetsession zu wissen. Starten einer Anwendung aus 3270 Session, z.B. MSWord, Acrobat Reader, ... Geht natürlich über eine Tabelle – Terminalname = IP-Adresse Das ist aufwändig Funktioniert aber bei allen Emulationen SNA, NONSNA, TCP/IP Telnet Ist aber keine Standard Lösung 16 Who Am I ? Ab TCP/IP 1.5.E gibt es eine Funktion, die GetHostByLuname heißt. Also muss man mit: EXEC CICS INQUIRE TERMINAL TERM(EIBTRMID) NETNAME(LUNAME) den LU-Namen ermitteln. 17 Who Am I ? Über Socket Befehle kann man jetzt die IP Adresse der eigenen Bildschirm Session ermitteln. Das geht über Socket Programmierung mit den Befehlen: SOCKET SOCKET SOCKET SOCKET OPEN,CONTROL, SEND,CONTROL, Senden: GETHOSTBYLUNAME RECEIVE,CONTROL, Lesen: IP Adresse Terminal CLOSE,CONTROL, (*) Beispiel Programm siehe GSE Tagung Bonn 18 Who Am I ? Beispiel: Aufruf eines Word Dokuments aus einem 3270 Programm: - -C. EDIT PARM. EDIT CPGCOM. EXPR WORDSTRT S. * GetHostbyLuname -O. FIELD CPGCOM 2 'SD'. * SEND .DOC 4 ' '. * RETURN CODE CPGTID 8. * 'L201' PARM 108. FIELD PARM. 24 '\\LWSERVER03\FIRMA\AUSTA' 48 'USCH\Wordaufruf.doc ' 19 Who Am I ? Wordstart: Ermittelt die IP-Adresse aufgrund des eigenen Terminalnamens IP Found Ja: Nein: Check auf Tabelle in CPGWRK Diese Tabelle wurde mit einem Java Programm und CPGXML erstellt. Aufruf CPGSHELL mit Parametern 20 Performance Messung Ein neues Projekt bei einem Kunden wird von einem externen Beratungsunternehmen entworfen. Hierbei sollte zunächst eine Machbarkeitsstudie erstellt werden. Es ist jedoch schwer, ohne fundamentales Wissen über z/VSE dessen Stärken einzuschätzen und zu bewerten. Wir haben an dieser Untersuchung teilgenommen, aus eigenem Interesse und um eventuelle Fehleinschätzungen zu vermeiden. 21 Performance Messung Bei einem POC (Proof of concept) wurde für CPGXML Aufrufe das Tool Jakarta Jmeter verwendet. Jmeter kann HTTP Befehle gegen einen Apache Server automatisch absetzen und ermittelt Performance Werte So kann festgestellt werden, ob die Hardware Ressourcen ausreichend sind oder ob sonstige Engpässe bei einer geplanten Applikation bestehen. 22 Performance Messung Die Starteinstellungen: 23 Performance Messung Aufruf der CPGXML 24 Performance Messung Graphische Anzeige der Ergebnisse: 25 Performance Messung Tabellarische Darstellung: 26 Ergebnis: 27 Performance Messung 28 TCP/IP 1.5.F Neues Programming Interface Port Queueing Facility Programm: FILESYS Änderungen zu 1.5.E Kurs TCP/IP am 17-19.6.2008 29 TCP/IP 1.5.F IPNETPRE Neue Programmier Schnittstelle IPNETPRE ersetzt IPNETRAN Keine Größen Begrenzung von Sourcen IPNETPRE ist schneller und verbraucht weniger Ressourcen. 30 TCP/IP 1.5.F IPNETPRE Ist Source kompatibel. Programme können sowohl mit IPNETPRE als auch mit IPNETRAN erstellt werden. - Einfache Umstellung. Jedoch nicht abwärts kompatibel läuft nicht mit 1.5.E und kleiner! Assembler war zunächst nicht unterstützt. 31 TCP/IP 1.5.F Port Queueing Zeit zum Starten einer Folgetransaktion dauert relativ lange. Mit der Port Queue können ankommende Requests (= Binds) gebuffert werden, wenn gerade kein LISTEN aktiv ist. Das verbessert die Verfügbarkeit von LISTEN Transaktionen / Programmen. 32 TCP/IP 1.5.F Port Queueing LISTEN TASK LISTEN TASK ( Folgetask ) EXEC TCP OPEN * Bind erfolgt EXEC TCP OPEN * Bind erfolgt EXEC CICS START TRANSACTION(TRID) EXEC CICS START TRANSACTION(TRID) EXEC TCP RECEIVE EXEC TCP RECEIVE EXEC TCP SEND EXEC TCP SEND 33 TCP/IP 1.5.F FILESYS Mit dem Befehl DEFINE FILESYS wurden alle Dateien im Standardlabel als DEFINE FILE für FTP definiert. Damit wurde z/VSE offen wie ein Scheunentor! Das Programm FILESYS erstellt die Source für die IPINIT im Quelltext! 34 TCP/IP Seminar VSE-Systemer-Seminar "Inside TCP/IP" 1. TCP/IP im VSE/ESA Installation des TCP/IP Konfiguration native unter VSE/ESA und als Gateway unter TCP/IP unter z/VM 2. Telnet Terminal-Definitionen im TCP/IP und im CICS TS im CEDA Auto Install Terminals (7 Farben/verschiedene Größen, etc) 3. GPS Drucken unter TCP/IP im VSE/ESA 4. PDF-Dokumente über TCP/IP erstellen 5. FTP Batch und CICS 6. Programmierung mit TCP/IP – Tipps und Beispiele 7. Wichtige Änderungen und Neuerungen in 1.5E und 1.5F 35 SET SDL,... nicht nur im BG ! Seit VSE/ESA 2.6 gilt (Siehe Release Guide): 2.3.2 Enhancement to the SET SDL Command Tipp The restriction that the SET SDL command can be issued from the BG partition only has been removed. Like the commands STDOPT and SETPARM SYSTEM since VSE/ESA 2.5, SET SDL can now be issued from any partition. 36 Host On Demand Ein z/VSE Kunde hat für seine 3270 Emulation WebSphere Host On-Demand im Einsatz und wollte Auf eine aktuelle Version umstellen. Active Directory so einbinden, dass die verfügbaren Terminal Sessions einem Benutzer zentral zugewiesen werden können. Spracheinstellung und Zuordnung der Anwendungsumgebung je User sollten zentral verwaltbar sein. 37 Host On Demand Nach der Anmeldung am HOD erhält man: Kennen Sie Host On Demand ? (HOD) Sagt Ihnen Telnet 3270E etwas ? Kennen Sie Anwendungen mit AD ? 38 Host On Demand -Telnet 3270E - Active Directory Vorteile von HOD über TN3270E und Verwaltung im AD: Host Sessions werden zentral verwaltet genau 1-mal. Egal ob der User im LAN arbeitet, oder über ein WAN, er erhält immer die gleichen Terminal Sessions. Das geht sogar über VPN ohne Modifikationen. Sehr hilfreich, wenn die Anwender nicht nur lokal, sondern auch aus vielen Ländern remote auf das z/VSE = CICS zugreifen. 39 Host On Demand Nach der Anmeldung beim AD (Active Directory) wird über Websphere eine Webseite mit den möglichen 3270 Sessions angezeigt. Diese Sessions werden vom Netzwerkadministrator vorkonfiguriert, so dass man eine zentrale Wartung der Hostsessions hat. Auf dem Client PC wird keine Terminal Emulation installiert. Das bedeutet: Zentrale Verwaltung im AD für alle externen und internen 3270 Sessions. Was muss auf dem Host definiert werden? TCP/IP Telnet 3270E VTAM APPL für diese Telnet Sessions Auf dem Client PC muss ein Browser installiert sein, sowie eine aktuelle Java Version. 40 Telnet 3270E Telnet 3270E Unterstützung: TN3270E ClientPort: 3270 LU=LWTNL201 TCP/IP Listener Daemon Port: 3270 VTAM LU=LWTNL201 Effector Daemon LuName: LWTNL201 Effector Daemon LuName: LWTNL202 LU=LWTNL202 TN3270E ClientPort: 3270 LU=LWTNL202 41 Telnet 3270E Durch Doppelklick auf ein 3270 Symbol wird eine Session gestartet. Die Session erhält die TerminalID L201 da der LuName = LWTNL201 war. Das wird über Terminal Autoinstall realisiert. 42 Active Directory Active Directory Service aus Wikipedia : 43 Active Directory Active Directory verwalten Im AD werden Standards für alle Benutzer einer Firma zentral verwaltet. Möchte man eigene Spalten zum AD hinzufügen, so muss das beantragt werden. Über X.500 OID ( Unique Object Id ) kann der Hersteller einer Software ins AD zusätzliche Einträge registrieren. (IANA.org) Der Einfachheit wegen haben wir uns entschieden, die Session Namen unter Beschreibung abzulegen, und diese über HOD Scripte in die Startseite eines Benutzers zu integrieren. 44 Host On Demand -Telnet 3270E - Active Directory Vorteile von HOD über TN3270E und Verwaltung im AD: Host Sessions werden zentral verwaltet genau 1-mal. Egal ob der User im LAN arbeitet oder über ein WAN, er erhält immer die gleichen Terminal Sessions. Das geht sogar über VPN ohne Modifikationen. z/VM – z/VSE – z/OS Host anywhere 45 Noch Fragen ? 46 Anhang Nachfolgend nähere Erläuterungen. 47 Telnet 3270E TCP/IP Telnet Storage Requirements Tipp Je Telnet Session, die definiert wird, braucht TCP/IP 4 KB virtuellen Speicher. Sessions, die gestartet werden und kein Buffer Sharing verwenden, brauchen 16K virtuellen Speicher. Buffer Sharing wird durch den Parameter POOL=YES definiert. Telnet Sessions mit Buffer Sharing belegen 20 Buffer à 16 KB für die ersten 100 Sessions. (320 KB) Je 10 Sessions sollte 1 weiterer Buffer definiert werden. 100 200 400 800 Sessions Sessions Sessions Sessions - 20 30 50 90 Buffer Buffer Buffer Buffer - 320 KB 480 KB 800 KB 1.440 KB 48 Telnet 3270E Definition von Telnet TN3270E: 1. Listener DEFINE TELNETD,ID=LG3270E,TN3270E=L,PORT=3270,GROUP=LG3270E,POOL=YES 2. Ellector DEFINE TELNETD,ID=L201,TN3270E=E,TERMNAME=LWTNL201,GROUP=LG3270E, - TARGET=CICSTEST,POOL=YES,LOGMODE=NSX32702,LOGMODE3=NSX32703, LOGMODE4=NSX32704,LOGMODE5=NSX32705 (,MENU=VTAMLW alternativ zu TARGET) 49 Telnet 3270E Dazu die VTAM Definition: CATALOG TCPAPPL.B REPLACE=YES TCPAPPL VBUILD TYPE=APPL TCPDIAG APPL AUTH=(ACQ) TCPIP APPL AUTH=(ACQ) TELNGRP1 GROUP EAS=1 . LWTNL201 APPL AUTH=(ACQ) (oder ,EAS=1) LWTNL202 APPL AUTH=(ACQ) LWTNL203 APPL AUTH=(ACQ) 50 TCP/IP 1.5.F Port Queueing Mit Query PortQueue kann abgefragt werden, ob PQ aktiv ist. In der IPINIT oder als Consolbefehl: PORTQueue PORT=xxxxx ,TIMEOUT=sec] [,DEPTH=nn] (xxxxx =1-65536, sec=1-60, nn=0-100) 51 TCP/IP 1.5.F Port Queueing Beispiele: PORTQueue PORT=4712,DEPTH=32 PORTQueue PORT=80,TIMEOUT=10, DEPTH=100 52 TCP/IP 1.5.F Port Queueing 100 portqueue port=4712,depth=32 F7 0097 IPN405I Port queue values successfully set F7-0100 IPN300A Enter TCP/IP Command 100 query portqueue F7 0097 IPN253I << TCP/IP Port Queuing >> F7 0097 F7 0097 F7 0097 F7 0097 F7-0100 IPN400I Port: 4712 Timeout: 3 sec Limit: 32 IPN401I Queued: 0/0/0 Reject: 0 Good: 0 Lost: 0 IPN402I Avg wait: 0 msec; Avg lost: 0 msec; Int: 14.467 IPN403I Partition: F7 Phase: IPNET IPN300A Enter TCP/IP Command 53 TCP/IP 1.5.F FILESYS Der folgende Job: // JOB FILESYS EXECUTION // LIBDEF *,SEARCH=PRD2.TCPIP15F // EXEC FILESYS SET SYSPCH=ON /* Erstellt aus dem Standard Label: ( siehe nächste Seite) 54 TCP/IP 1.5.F FILESYS DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE FILE,DLBL=IJSYSRS,PUBLIC='VSE.SYSRES.LIBRARY',TYPE=LIBR FILE,DLBL=IJSYSR2,PUBLIC='VSE.SYSRES.LIBRARY',TYPE=LIBR FILE,DLBL=IJSYSR1,PUBLIC='SYS.NEW.RES',TYPE=LIBR FILE,DLBL=PRD1,PUBLIC='VSE.PRD1.LIBRARY',TYPE=LIBR FILE,DLBL=PRD2,PUBLIC='VSE.PRD2.LIBRARY',TYPE=LIBR FILE,DLBL=PRDPRIM,PUBLIC='VSE.PRD1.LIBRARY',TYPE=LIBR FILE,DLBL=PRIMARY,PUBLIC='VSE.PRIMARY.LIBRARY',TYPE=LIBR FILE,DLBL=SYSDUMP,PUBLIC='VSE.DUMP.LIBRARY',TYPE=LIBR FILE,DLBL=CRYPTO,PUBLIC='VSE.CRYPTO.LIBRARY',TYPE=LIBR FILE,DLBL=DTSFILE,PUBLIC='ICCF.LIBRARY',TYPE=ICCF FILE,DLBL=IJQFILE,PUBLIC='VSE.POWER.QUEUE.FILE',TYPE=POWER FILE,DLBL=IJDFILE,PUBLIC='VSE.POWER.DATA.FILE',TYPE=POWER FILE,DLBL=IJSYSCT,PUBLIC='VSAM.MASTER.CATALOG',TYPE=VSAMCAT FILE,DLBL=VSESPUC,PUBLIC='VSESP.USER.CATALOG',TYPE=VSAMCAT FILE,DLBL=IESCNTL,PUBLIC='VSE.CONTROL.FILE',TYPE=KSDS FILE,DLBL=IESMSGS,PUBLIC='VSE.MESSAGES.ONLINE',TYPE=KSDS FILE,DLBL=CPGWKL,PUBLIC='CPGWKL.CPGK',TYPE=KSDS 55 TCP/IP 1.5.F FILESYS Diese generierten Definitionen in die IPINIT bei Bedarf eintragen, damit ein FTP von und zu diesen Dateien erfolgen kann. DEFINE FILE,DLBL=PRD2,PUBLIC='VSE.PRD2.LIBRARY',TYPE=LIBR DEFINE FILE,DLBL=PRDPRIM,PUBLIC='VSE.PRD1.LIBRARY',TYPE=LIBR DEFINE FILE,DLBL=PRIMARY,PUBLIC='VSE.PRIMARY.LIBRARY',TYPE=LIBR DEFINE FILE,DLBL=DTSFILE,PUBLIC='ICCF.LIBRARY',TYPE=ICCF DEFINE FILE,DLBL=IJQFILE,PUBLIC='VSE.POWER.QUEUE.FILE',TYPE=POWER DEFINE FILE,DLBL=IJSYSCT,PUBLIC='VSAM.MASTER.CATALOG',TYPE=VSAMCAT DEFINE FILE,DLBL=VSESPUC,PUBLIC='VSESP.USER.CATALOG',TYPE=VSAMCAT DEFINE FILE,DLBL=MYFILE,PUBLIC=‚MYFILE.KSDS',TYPE=KSDS ................... 56 Host On Demand TN3270E ist eine Erweiterung zu Telnet 3270. Hierbei werden 2 Daemons gestartet: Listener Daemon und zwar 1 Daemon je Port Effector Daemon, je 1 Daemon pro Session Bei TELNET3270E wird der LU-Name bei der Terminal Definition mitgegeben. Damit ergibt sich eine eindeutige Zuordnung zur Terminal-ID. 57 Active Directory Einige Parameter lassen sich vom Benutzer ändern, andere nicht. Damit kann sichergestellt werden, dass nur befugte Personen Zugang zum CICS erlangen. Man kann jedoch fast alle Parameter sperren, so dass keine Modifikationen möglich sind. LWTNL201 58 Active Directory HOD Sessions verwalten Die Sessions werden vorkonfigurierthierzu wird der Implementieringsassistent aufgerufen. Nach Auswahl einer Session können die Session Daten verändert und eingestellt werden. Außerdem kann bestimmt werden, ob am Client Änderungen zu diesen Definitionen erlaubt werden oder nicht. 59 Active Directory HOD Session Einstellungen LWTNL203 60 Host On Demand - Active Directory Scripte von HOD anpassen In den Scripten kann man jetzt Parameter der Default Konfiguration der Sessions austauschen, die man aus AD gelesen hat. Siehe hierzu die letzten drei Zeilen dieses Scripts. 61