Title: CICS / JAVA
1CICS / JAVA
- Was ist das?
- Warum im CICS?
- Was ist möglich?
- Was wäre möglich?
- Performance
- Laborumgebung
- Enterprise Java Beans im CICS
-
2CICS / JAVA Was ist das?
- Ab dem CICS Transaction Server 1.3 lassen sich
Anwendungen im CICS mittels JAVA erstellen - JAVA wird vom CICS wie eine normale
Programmiersprache behandelt (incl. gegenseit.
Sprachaufrufe) - Es gibt zwei Modi
- JVM-Ausführung Über das OTE wird die JVM aus den
Unix-System-Services geladen (100 JAVA) - HPJ-Compilierung Momentan schneller, jedoch
Einschränkungen vorhanden - In-bound Zugriff von Corba-Clients
JAVA-Transaktionen von aussen aufrufbar - Kein EXEC CICS und kein CICS-Translator, da die
CICS-APIs in JAVA-Klassen gekapselt sind - CICS-Abends oder -Conditions werden als
JAVA-Exceptions umgesetzt - Entwicklungsumgebung JBuilder oder VisualAge
JAVA möglich - Remote Debugging incl. graf. Oberfläche am PC ins
CICS hinein
3CICS / JAVA Gründe (1)
- Vorteile von JAVA generell
- Erhöhung der Qualität, da weniger Abbrüche (keine
Pointer, keine Adressen in JAVA) - Moderene Sprache mit hoher Marktdurchdringung
Quasi Standard - Integration bestehender/künftiger JAVA-Lösungen
vereinfacht - Cobol und PL/1-Programmiererresourcen gehen
zurück - Wenig spezifisches Plattform-Know-how
erforderlich - Entwicklung plattformunabhängig
- Einsatz moderner Entwicklungswerkzeuge am PC
möglich - Vorteile der Objektorientierung (vorallem
Schnittstellen / Kapselung) - Wesentlich einfacher als C
- Automatische Garbage Collection (Vgl. C)
- Verwendung von Komponententechnik professionell
möglich
4CICS / JAVAGründe (2)
- IBM sieht JAVA als de facto Programmiersprache
für OS/390
- Gründe für die Unternehmen
- Gemeinsamer Entwicklungssprachstandard
- JAVA mit Oracle 8/9i möglich (z.B. Stored
Procedures in JAVA, JDeveloper) - Oracle IBM EJBs sollen austauschbar sein
- WebSphere EJBs in Verbindung zu CICS-EJBs
- Integration mit bestehenden CICS-Anwendungen
seichter Übergang - Nutzung von IBM-Host-Software
5CICS / JAVAWas ist möglich? (1)
- JAVA-Programme können im native MVS,
Unix-System-Services (OpenEdition) und - auch im CICS laufen
- MVS
- Durch HPJ-Compiler wird ein native Executable
(Loadmodul) erzeugt. Dies ist (wie bisher) - als JOB startbar
- Alle MVS-Möglichkeiten sind vorhanden bzw. lassen
sich Schnittstellen wie bisher leicht - erstellen
- USS
- In der USS- oder Linux-Umgebung können
JAVA-Programme als Prozesse wie auf anderen - Servern laufen und mit dem CICS, MVS oder extern
kommunizieren
6CICS / JAVAWas ist möglich? (2)
- CICS (Transaction Server 1.3)
- Native per HPJ-Compiler oder auf der JVM
lauffähig - Mittels JCICS-Klassen Zugriff auf die gekapselten
CICS-Befehle - Interaktion/Integration mit CICS-Mitteln (CICS
LINK, XCTL, etc.) oder selbst per JNI mögl. - Verwendung von MQSeries-JAVA im CICS möglich
- Über CICS-Corba leichter Aufruf von
CICS-Transaktionen (non-terminal) von externen
Stellen - (Internet, C/S, u.v.m) ohne Commarea-Beschränkung
- CICS TS 1.3 für die Entwicklung, CICS TS 2.1 für
die Produktion - Nutzung von JDBC, SQLJ, MQSeries-JMS oder
JAVA-Client, IIOP Corba
7Offizielle Restriktionen
- Aber per JNI oder CICS Link mögl.
8JCICS - Auszug aus der Klassenhierarchie
9JCICS - Klassenhierarchie Umsetzung von
Returncodes in Exceptions
10TSQ Beispiel
11TSQ Beispiel
12Exceptions
13Remote-Debugging Breakpoints, Single step, Stack
Trace, Variablen von Host-Programme graf. am PC
14Programmerstellung
15Beispiele
161. Beispiel Übersicht MitarbeiterkontenIn JAVA
erstellt, nutzt MQSeries-JAVA-Client um auf SAP
zuzugreifen (Nutzt DRAT-JAVA-Klassen im CICS)
17Fakten zum Beispiel 1
- Transaktionsorientiert
- Nutzt MQSeries-JAVA-Client im CICS
- Wiederverwendung von DRAT-JAVA-Klassen
- BMS-Bildausgabe vollkommen generisch
- Nutzt TCP/IP-CICS-Möglichkeiten
- Ist ein mögliches Beispiel für späteren
Anw.-Programmierer - Mit JBuilder erstellt
182. Beispiel Nutzung von math. Routinen im
CICS(JAVA-Verhalten bei Anzahl Berechnungen und
Neustart der CICS-JVM pro Tastendruck
(transaktionsorientiert))
19Fakten zum Beispiel 2
- Umgeschriebenes Applet als CICS-Transaktion
- Nutzt weiterhin den unveränderten
Original-JAVA-Kern-Code
CICS-Applet
Kern
- Transaktionsorientiert, nutzt einige
JCICS-Klassen - CICS-JVM startet pro Tastendruck Test des
CICS-Hot-Poolings!!!
203. Beispiel Antwortzeitverhalten(JAVA-Verhalten
bei hoher Benutzerinteraktion)
21Fakten zum Beispiel 3
- Client/Server Server läuft in Endlosschleife
- Der Client arbeitet transaktionsorientiert
- Austausch zw. C/S-System per TS-Queue (MQSeries
wäre besser) - Geeignet für Antwortzeitverhalten-Test und
Resourcenverbrauch - Nutzt mehrstufige Tabellen
- Pro Stein-Durchlauf wird 18 mal ein CICS-LINK
durchgeführt - Pro Tastendruck wird ein CICS-LINK durchgeführt
- Massenhafte Programmiersprachenübergänge (C und
JAVA) - Nutzt JCICS-Klassen TSQ, Task, Program, Commarea
und Terminal- - Klassen
- Zeigt das Ausschließlichkeit der JCICS-Klassen im
Initial-Thread - Auch hier sind die Original Tetris-JAVA-Kern-Sourc
en unverändert! - CICS-JVM läuft dauerhaft im Speicher (CICS SOS???)
22CICS / JAVAWas wäre möglich
- Nutzung von CICS (ab Transaction Server 2.1) für
Enterprise JAVA Beans (Session Beans) - Interaktion mit WebSphere auf S/390 (künftig mit
gem. Adressbereich)
23CICS Roadmap
24CICS / JAVAPerformance
- Hot-Pooling Erlaubt HPJ-JAVA-Programmen die
selbe LE-Enclave - wiederzuverwenden
- CICS Transaction Server 2.1 Nutzt neue JVM (die
nicht portiert wurde) - Ab V2.1 persistent, reusable JVM und JAVA 2
Unterstützung
25JAVA Versionen
26Verfügbarkeit von Funktionen
27Performance
28Laborumgebung CICS-NT mit JAVA-Support!
Bisherige Host-Anwendungen
CICS-Programm-Kommunikation
JAVA-Anwendung aus Anw.-Entwicklung
JCICS JAVA-Klassen
Direct-to-CICS (DTC) C-Schicht mit CICS-APIs
CICS System
29JCICS-Klassen aus California -DFJCZDTC
JNI-CICS-C-Schicht selber zuhause... 1/2
Einfacher Fall
EXEC CICS WRITEQ TS
QUEUE(...) FROM(daten)
LENGTH(len) ITEM
(nr) MAIN
RESP(rcode)
TSQ tsq ... tsq new TSQ() tsq.setName("FIRST00
1") try tsq.writeItem(inhalt.getBytes(
)) catch (Throwable t) ...
30JCICS-Klassen aus California -DFJCZDTC
JNI-CICS-C-Schicht selber zuhause... 2/2
Etwas mehr Gehirn-Jogging
- Task myTask Task.getTask()
- TerminalPrincipalFacility term
(TerminalPrincipalFacility) -
myTask.getPrincipalFacility() ???
31Begriffe für die nächste Folie
Bisher war CICS eine geschlossene Umgebung, die
keine Calls nach aussen erlaubte. - CICS startet
Benutzertransaktionen in einem MVS Task Control
Block (quasi-reentrant TCB (QR-TCB)). - Alle
Calls von CICS nach aussen könnten den CICS TCB
so blockieren, dass alle Transaktionen
betroffen wären. gt Einführung eines open TCBs
für die JVM der sog. J8 TCB. Dieser darf
andere Services aus CICS heraus aufrufen, ohne
den QR-TCB von CICS zu beeinflussen. Jede
CICS-Transaktion mit JVM läuft jedoch in einem
eigenen J8 TCB mit einer eigenen JVM
jeweils! Die JVM wird beim Transaktionsstart
gestartet und bei Ende gelöscht. Der J8 TCB
benutzt MVS-LE und nicht CICS-LE-Services, daher
können auch die o.a. zusätzlichen Services in
Form der Java-Klassen benutzt werden / Packages
java.io. java.net. java.rmi.
32Der Original CICS TS 1.3 Starter
33By the way... 1/2
- Quasi-reentrant TCB (QR-TCB)
- Heute Alle Anwendungsprogramme laufen in diesem
Main-TCB - Zeitscheibenmechanismus, jede CICS-Task kommt mal
dran - Bei der Zuteilung einer anderen Task, wird die
bestehende Task inaktiv - Heute ist immer nur eine Task zu einer Zeit
wirklich aktiv - Einige Programme werden von mehr als einer
CICS-Task aufgerufen - (jedoch ist trotzdem zu einer Zeit immer nur
eine Task aktiv!) - Die QR erlaubt es Anwendungsprogrammen gemeinsame
Speicher- - bereiche zu haben (z.B. CWA). Einen echten
Concurrent-Update kann es - heute nicht geben (also auch keine Protection
hierfür notwendig). - (Vergleich hierzu C, NT-Code mit Critical
Sections oder JAVA mit den synchronized - Methoden (Monitors))
- gt Heutiger CICS-Code ist nicht threadsafe! Die
IBM arbeitet massiv - an der vollständigen multithread-CICS-Version.
34By the way... 2/2
Open TCB Eine neue CICS-TCB-Art auch für
Anwendungsprogramme Jeder neue TCB für die
alleinige Benutzung durch eine CICS-Task
(wieder- verwendung möglich Hot-Pooling) Kein
Subdispatching in Open-TCBs, Blockierung durch
Anwendungen erlaubt Threadsafe Programs Können
von mehreren TCBs gleichzeitig aufgerufen
werden Sind i.d.R. read-only (nur serialisierter
Zugriff auf shared Storage bei Updates) Können
sich nicht auf QR verlassen (bei Zugriffen auf
Resourcen oder Speicher (CWA!)) Müssen
Serialisierungstechniken benutzten, z.B.
Enqueue/Dequeue für den Zugriff auf gem.
Speicherbereiche
35- EJB Ist eine nicht-visuelle Komponente einer
verteilten, transaktionsorientierten, - server-seitigen Anwendung
- Anwendungsentwickler können die Komponenten zu
Anwendungen zusammenfügen - Framework-Dienste wie Naming, Security,
Transaction, Persistenz stehen zur Verfügung
36- Warum im CICS?
- Baut auf dem bisherigen Investment auf (best.
CICS-Anwendungen) - Evolutionärer Ansatz
- Nutzt best. System-Management
- Performance
- Programmierer wird entlastet von
- Eigener Transaktionlogik
- Eigene Security
- Eigener Mehrfachzugriffslogik
- Skalierbares Host-Umfeld
- Kein WebSphere- oder BEA-Know-how erforderlich
37(No Transcript)
38(No Transcript)
39EJB Zusammenspiel
40Redbook www.redbooks.ibm.com (als PDF Datei
verfügbar)
SG245275-01