Batchverarbeitung mit Java im CICSHr Nothroff

Werbung
Batchverarbeitung mit
Java im CICS
Günter Nothtroff
Ehningen, 25.03.2014
Agenda
¡ 
¡ 
¡ 
¡ 
¡ 
¡ 
¡ 
Warum Java statt COBOL?
Warum CICS?
Ablauf
OSGi und CICS
BluePrint
Deployment
Stolpersteine
Warum Java statt COBOL?
¡  Unterprogramm
nicht nur für Host
¡  Kein doppelter Pflegeaufwand
¡  Nutzung der Funktion auch von
vielen Externen
CICS und Alternativen
¡  Läuft
bei uns schon, gute Erfahrung
¡  Websphere Application Server (WAS)
haben wir nicht auf z
¡  JZOS passt nicht: Die
Hauptprogramme sind COBOL
¡  COBOL-JNI Java Native Interface ist
- komplex (bei uns keine Erfahrung)
- erfordert pro Job eine eigene JVM
- Viele hundert Jobs pro Tag
Ablauf
¡  Batchprogramm
ruft statt
bisheriger Prüfroutine nun das
Schnittstellenprogramm auf
¡  EXCI-Verbindung ins CICS
¡  Java-Programm (Wrapper)
¡  Blueprint-Abstraktionsschicht
¡  Eigentliche Kernprüfung
EXCI (External Caller Interface)
¡  Schnittstellenprogramm
-öffnet PIPE ins CICS (Initialize User
Call, Allocate Pipe, Open Pipe)
- Eigentliche Aufrufe (DPL)
- Schließen Pipe (Close, Deallocate)
¡  SDFHSAMP(DFH0CXCC) als Muster
¡  EXCI-Programme nur über
Preprozessor umwandelbar
OSGi
¡  Standardvorgehensweise
ab CICS V4
¡  Vermeidet "JAR-Hölle" wegen
ClassNotFound-Exception
¡  Abhängigkeiten werden bei
Installation des Bundles aufgelöst
¡  Unterschiedliche Versionen eines
Packages möglich
Definition als CICS-Programm
¡  Angabe
von JVM Server
¡  Angabe: OSGi Service or Class Name
de.drv.dsrv.kernpruefung.cics.DU055
¡  Name muss mit OSGi Service Name
übereinstimmen (CICS-MainClass)
¡  Kein Hinweis auf Ablageort in HFS/ZFS
Java-Bundles
¡  BundleName
nur für CICS-Verwaltung
¡  BundleDir zeigt auf ZFS-Verzeichnis
¡  Dient zur Versionsverwaltung
¡  MANIFEST.MF
- CICS-MainClass
- Import-Package und
- Export-Package (Abhängigkeiten)
Name.osgibundle
¡  Steht
neben JAR-File im BundleOrdner
¡  Enthält SymbolicName und
JVMServer
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<osgibundle symbolicname="KernpruefungAufruf"
version="1.0.0" jvmserver="DRV$JVMS"/>
cics.xml
Steht im Unterordner META-INF des
Bundles sowie im JAR-File (/META-INF)
¡  Enthält Versionsangabe
¡ 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<manifest xmlns="http://www.ibm.com/xmlns/prod/cics/bundle"
build="GM01-20121114-1544" bundleRelease="0"
bundleVersion="1" bundleMicroVer="0" bundleMinorVer="0"
bundleMajorVer="1" id="KernpruefungAufruf.Bundle">
<meta_directives>
<timestamp>2013-10-07T11:33:50.184+02:00 </timestamp> </
meta_directives>
<define path="KernpruefungAufruf.osgibundle" type= "http://
www.ibm.com/xmlns/prod/cics/bundle/OSGIBUNDLE"
name="KernpruefungAufruf"/>
</manifest>
Unsere Bundles
¡  Wrapper-Klasse
(CommArea umsetzen)
¡  Aufruf
(nur Interface-Definition)
¡  Implementation
(eigentliche Arbeit)
¡  Versionswechsel normalerweise nur
bei Implementations-Bundle
BluePrint
¡ 
¡ 
¡ 
¡ 
¡ 
CICS-kann NEWCOPY bzw. PHASEIN
Java nicht
BluePrint impft dem rufenden Programm die
Adresse des gerufenen Programmes ein
Versionswechsel: Neue Version installieren,
danach alte Version deaktivieren.
Erst hier wird BluePrint aktiv und der
Versionswechsel durchgeführt
Benötigt OSGI_BUNDLES in JVM-Profil, die
schon beim JVM-Start geladen werden
blueprint.xml
¡  Im
Verzeichnis OSGI-INF des Bundles
¡  Verweis auf bind/unbind-Methoden in
angegebener Klasse für gewünschte
Property (gerufenes Programm)
¡  Nach Installation neuer
Unterprogramm-Version erfolgt
Update der Property in
Hauptprogramm durch BlueprintFramework
Deployment
¡  Entwicklungsebene:
CICS-Explorer
bzw. RDz mit Perspektive CICS-SM
¡  Test bzw. Prod über hauseigenes
Staging-Verfahren, als weitere
Sprache inkl. Skeleton hinterlegt
¡  Zeitgesteuertes Aktivieren möglich
(deaktivieren der alten Version)
Deployment - Grafik
DEFINE BUNDLE
KERNAUF
Kernauf.Bundle_1.0.2
Deployment:
Kopieren
BUNDLE-Member
Anstarten Job
Submit
DEFINE BUNDLE
KERNAUF
Kernauf.Bundle_1.0.2
REXX-Prozedur
CICS-Explorer
bzw. RDz-CICS-SM
CICS-Repository
DFHCSD
DFHCSDUP-Sysin
Befüllen CSD
CICS-Repository
DFHCSD
Kopieren im HFS
/etc/cicsts/cicsT/
bundles
Ablageverzeichnis
OSHELL-Sysin
/etc/cicsts/cicsE/
bundles
Ablageverzeichnis
XFILE-Sysin
CICS: Aktive
Elemente
XFILE:
EXCI-Aufruf XFILC
für Create Bundle
CICS: Aktive
Elemente
Stolperfallen
¡  EXCI-Nutzung
zestört RETURN-CODE,
erschwert Austausch der Subroutinen
¡  OSHELL liefert keinen RC zurück
¡  Kein IBM-Tool, um Definitionen zu
definieren und aktivieren
à Eigenentwicklung
Noch Fragen?
Danke für Ihre Aufmerksamkeit!
Herunterladen