Java unter z/os Informationen und Erfahrungen
Agenda Funktionsweise und Systemvoraussetzungen Java als Stand Alone Anwendung Java im Application Server Integration Java / Cobol Entwicklungsaspekte katja.findeis@cimt.de 2
Hostarchitektur Java COBOL / PL1 Anwendungsprogramme Anwendungssysteme spezifische Anwendungen CICS IMS DB2 WAS JVM Subsysteme Betriebssystem Hardware JES, WLM, RRS, RACF z/os Z900 USS katja.findeis@cimt.de 3
Funktionsweise Java auf z/os HFS USS HFS JDK /opt /usr /var /opt/ibm/java/jdk5/ z/os Adressraum Unix System Services Java Virtuelle Maschine Standard! File IO HFS Progs /cimt/jzos/ /cimt/jzos/data/ Java Programm PS Datei CIMT.ENTW.JZOS.INPUT PO Datei CIMT.ENTW.JZOS.OUTPUT Speziell! JRIO katja.findeis@cimt.de 4
Systemvoraussetzungen Hardware: z800, z890, z900, z990, z9, z10 Betriebssystem: z/os V1 R6 oder höher für Java SDK V5 z/os V1 R7 oder höher für Java SDK V6 Unix System Services Java Development Kit Version SDK V6 (seit Januar 2008) Koexistenz verschiedener SDKs möglich katja.findeis@cimt.de 5
Agenda Funktionsweise und Systemvoraussetzungen Java als Stand Alone Anwendung Java im Application Server Integration Java / Cobol Entwicklungsaspekte katja.findeis@cimt.de 6
Zugriff auf Dateien Standard Java Weg: Package java.io.* Zugriff auf Dateien im USS Filesystem Beispiel: Einlesen eines Textes aus einer Datei import java.io.*... // Parameter filename = Dateiname der Unix Datei // z.b. /cimt/jzos/data/input.txt public void readfile(string filename) { try { BufferedReader infile = new BufferedReader(new FileReader(fileName)); String str; while ((str = infile.readline())!= null) { process(str); } infile.close(); } catch (IOException e) { processexception(e) } } katja.findeis@cimt.de 7
Zugriff auf Dateien Spezieller Zugriff auf Host Dateien: com.ibm.recordio.* Zugriff auf PS und PO Dateien, VSAM Beispiel: Einlesen eines Textes aus einer PS Datei import com.ibm.recordio.*... // Parameter filename = Dateiname der PS Datei // z.b. CIMT.ENTW.JZOS.INPUT public void readfile(string filename) { try { IRecordFile infile = RecordFile.getInstanceOf(fileName); IFileInputRecordStream inrec = FileInputRecordStream.getInstanceOf(inFile); byte[] rec = new byte[infile.getrecordlength()]; while (inrec.read(rec)) >= 0) { process(rec); } } catch (IOException e) { processexception(e) } } katja.findeis@cimt.de 8
Codepage Problematik JVM Unicode USS EBCDIC (IBM-1047) Konvertierung Konvertierung z/os EBCDIC (IBM-237) FTP Externes System Auftreten von Konvertierungsproblemen bei: Ein-/ Ausgang von externen Dateien (z.b. über FTP) Transfer von Dateien zwischen z/os und USS Zugriff auf z/os Dateien aus Java katja.findeis@cimt.de 9
Integration in Batch Netze Aufruf von Java Programmen per JCL BPXBATCH, BPXBATSL JZOS Launcher (verfügbar ab JDK 1.4.2 + APARs) katja.findeis@cimt.de 10
Integration in Batch Netze Beispiel: JCL für BPXBATSL Step 1 //******************************************************** //* Aufruf des Java Programms mit BPXBATSL //******************************************************** //JAVA EXEC PGM=BPXBATSL, // PARM='PGM /opt/ibm/java/jdk5/bin/java de.cimt.batch.job' //INDATA DD DSN=CIMT.ENTW.JZOS.INPUT,DISP=SHR //OUTDATA DD DSN=CIMT.ENTW.JZOS.OUTPUT, // DISP=(NEW,CATLG,CATLG), // LRECL=2000,RECFM=VB //STDENV DD PATH='/cimt/jzos/config/setEnvMVS.sh', // PATHOPTS=ORDONLY //STDOUT DD PATH='/cimt/jzos/logs/joblog.out', // PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU //STDERR DD PATH='/cimt/jzos/logs/joblog.err', // PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU katja.findeis@cimt.de 11
Integration in Batch Netze Beispiel: JCL für BPXBATSL Step 2 + 3 //**************************************************************** //* Kopieren der Logausgaben auf Sysout //**************************************************************** //COPYLOG EXEC PGM=IKJEFT01,DYNAMNBR=100 //HFSLOG DD PATH='/cimt/jzos/logs/joblog.out', // PATHOPTS=(ORDONLY),PATHDISP=(DELETE,DELETE) //HFSERR DD PATH='/cimt/jzos/logs/joblog.err', // PATHOPTS=(ORDONLY),PATHDISP=(DELETE,DELETE) //PROTOK DD SYSOUT=*,LRECL=1024,RECFM=VB //FEHLER DD SYSOUT=*,LRECL=1024,RECFM=VB //SYSTSPRT DD DUMMY //SYSTSIN DD * OCOPY INDD(HFSLOG) OUTDD(PROTOK) OCOPY INDD(HFSERR) OUTDD(FEHLER) /* //**************************************************************** //* Im Abend Fall von BPXBATSL einen echten Abend werfen. //* RC des Steps = 9 (Abend der JVM) oder RC = 3 (Abend im USS)! //**************************************************************** // IF (REORG.RC = 3!REORG.RC = 9) THEN //ABEND EXEC PGM=JAVABND,PARM='4004' // ENDIF katja.findeis@cimt.de 12
Integration in Batch Netze Beispiel: JCL für JZOS Launcher //******************************************************** //* Aufruf eines Java Programms unter Nutzung des //* JZOS Launchers //******************************************************** //JAVA EXEC PROC=JVMPRC50, // JAVACLS= 'de.cimt.batch.job' //INDATA DD DSN=CIMT.ENTW.JZOS.INPUT,DISP=SHR //OUTDATA DD DSN=CIMT.ENTW.JZOS.OUTPUT, // DISP=(NEW,CATLG,CATLG), // LRECL=2000,RECFM=VB //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //STDENV DD DSN=CIMT.ENTW.JZOS.JAVAENV(JPRPTY50),DISP=SHR katja.findeis@cimt.de 13
Agenda Funktionsweise und Systemvoraussetzungen Java als Stand Alone Anwendung Java im Application Server Integration Java / Cobol Entwicklungsaspekte katja.findeis@cimt.de 14
WebSphere für z/os Komponenten HTTP HTTP Server WebSphere Plugin RMI z/os WebSphere Webcontainer EJB Container JDBC DB2 Servlet Servlet RMI EXCI CICS HTTP HTTP Transport Handler JSP JSP RMI OTMA JMS IMS MQ katja.findeis@cimt.de 15
Agenda Funktionsweise und Systemvoraussetzungen Java als Stand Alone Anwendung Java im Application Server Integration Java / Cobol Entwicklungsaspekte katja.findeis@cimt.de 16
Integration Java / COBOL Ablaufdiagramm Java Prozess Java-COBOL Prozess katja.findeis@cimt.de 17
Integration Varianten Variante 1 Transaktionsmonitor Java Prozess Connector CICS Java Transaktion CICS COBOL Transaktion COBOL Transaktion katja.findeis@cimt.de 18
Integration Varianten Variante 2 Messeaging Java Prozess COBOL Prozess MQ Series katja.findeis@cimt.de 19
Integration Varianten Variante 3 Direktaufruf Prozess Java HaPro JNI C - Wrapper COBOL UPro katja.findeis@cimt.de 20
Integration Varianten Variante 4 über die Datenbank Java Programm COBOL Programm DB2 Stored Procedure Stored Procedure katja.findeis@cimt.de 21
Integration Fazit Integration ist nur möglich durch: Technische Brücken Mapping der Datenstrukturen von Cobol Copy Strecken auf Java Objekte Problemeatische Transaktionssteuerung Prozesse möglichst zwischen Java und COBOL trennen Lieber Basisfunktionen in Java und COBOL vorhalten als integrieren katja.findeis@cimt.de 22
Agenda Funktionsweise und Systemvoraussetzungen Java als Stand Alone Anwendung Java im Application Server Integration Java / Cobol Entwicklungsaspekte katja.findeis@cimt.de 23
Entwicklungsaspekte Entwicklung Stand Alone auf der Workstation z.b. mit RAD oder Eclipse WebSphere auf der Workstation mit RAD und lokaler WebSphere Umgebung katja.findeis@cimt.de 24
Entwicklungsaspekte Ausführung und Test Stand Alone Lokaler Test für Anwendungslogik Remote Test für spezifische APIs, z.b. Record I/O WebSphere Lokaler Test in der WebSphere Umgebung des RAD Remote Test auf WebSphere z/os katja.findeis@cimt.de 25
Entwicklungsaspekte Test von Java Batches katja.findeis@cimt.de 26
Entwicklungsaspekte Debugging Stand Alone mit dem Eclipse Debugger lokal und remote mit dem Java Debugger (jdb) im USS WebSphere mit dem RAD Debugger lokal und remote katja.findeis@cimt.de 27
katja.findeis@cimt.de 28
Standorte Berlin Otto-Suhr-Allee 97-99 10585 Berlin Tel. +49 30 83 40 98-0 Düsseldorf Königsallee 106 40215 Düsseldorf Tel. +49 211 3 01 22-240 Frankfurt Grüneburgweg 9 60322 Frankfurt Tel. +49 69 9 15 06 87-0 Hamburg Burchardstr. 17 20095 Hamburg Tel. +49 40 5 33 02-0 Köln Oskar-Jäger-Straße 170 50825 Köln Tel. +49 221 367 986-0 NL, Eindhoven Zandvoorsstraat 11 2586 VT Den Haag, NL Tel. +31 6 43 08 49 50 USA, Boston 240 Pleasant Street Methuen, MA 01844 Tel. +1 (978) 5 58 41 10 katja.findeis@cimt.de 29 29