CICS JAVA Was ist das Warum im CICS

  • Slides: 40
Download presentation
CICS / JAVA Was ist das? Warum im CICS? Was ist möglich? Was wäre

CICS / JAVA Was ist das? Warum im CICS? Was ist möglich? Was wäre möglich? Performance Laborumgebung Enterprise Java Beans im CICS Stand 2/13/2022 Seite 1

CICS / JAVA: Was ist das? • Ab dem CICS Transaction Server 1. 3™

CICS / 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 Visual. Age JAVA möglich • Remote Debugging incl. graf. Oberfläche am PC ins CICS hinein Stand 2/13/2022 Seite 2

CICS / JAVA Gründe (1) Vorteile von JAVA generell: • Erhöhung der Qualität, da

CICS / 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 Stand 2/13/2022 Seite 3

CICS / JAVA Gründe (2) • IBM sieht JAVA als „de facto“ Programmiersprache für

CICS / JAVA Grü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/9 i möglich (z. B. Stored Procedures in JAVA, JDeveloper) • Oracle + IBM EJBs sollen austauschbar sein • Web. Sphere EJB‘s in Verbindung zu CICS-EJB‘s • Integration mit bestehenden CICS-Anwendungen „seichter Übergang“ • Nutzung von IBM-Host-Software Stand 2/13/2022 Seite 4

CICS / JAVA Was ist möglich? (1) JAVA-Programme können im native MVS, Unix-System-Services (Open.

CICS / JAVA Was ist möglich? (1) JAVA-Programme können im native MVS, Unix-System-Services (Open. Edition) 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 Stand 2/13/2022 Seite 5

CICS / JAVA Was ist möglich? (2) • CICS (Transaction Server 1. 3): •

CICS / JAVA Was 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 Stand 2/13/2022 Seite 6

„Offizielle Restriktionen“ • Aber per JNI oder CICS Link mögl. Stand 2/13/2022 Seite 7

„Offizielle Restriktionen“ • Aber per JNI oder CICS Link mögl. Stand 2/13/2022 Seite 7

JCICS - Auszug aus der Klassenhierarchie Stand 2/13/2022 Seite 8

JCICS - Auszug aus der Klassenhierarchie Stand 2/13/2022 Seite 8

JCICS - Klassenhierarchie Umsetzung von Returncodes in Exceptions Stand 2/13/2022 Seite 9

JCICS - Klassenhierarchie Umsetzung von Returncodes in Exceptions Stand 2/13/2022 Seite 9

TSQ Beispiel Stand 2/13/2022 Seite 10

TSQ Beispiel Stand 2/13/2022 Seite 10

TSQ Beispiel Stand 2/13/2022 Seite 11

TSQ Beispiel Stand 2/13/2022 Seite 11

Exceptions Stand 2/13/2022 Seite 12

Exceptions Stand 2/13/2022 Seite 12

Remote-Debugging: Breakpoints, Single step, Stack Trace, Variablen von Host-Programme graf. am PC Stand 2/13/2022

Remote-Debugging: Breakpoints, Single step, Stack Trace, Variablen von Host-Programme graf. am PC Stand 2/13/2022 Seite 13

Programmerstellung Stand 2/13/2022 Seite 14

Programmerstellung Stand 2/13/2022 Seite 14

Beispiele Stand 2/13/2022 Seite 15

Beispiele Stand 2/13/2022 Seite 15

1. Beispiel: Übersicht Mitarbeiterkonten In JAVA erstellt, nutzt MQSeries-JAVA-Client um auf SAP zuzugreifen (Nutzt

1. Beispiel: Übersicht Mitarbeiterkonten In JAVA erstellt, nutzt MQSeries-JAVA-Client um auf SAP zuzugreifen (Nutzt DRAT-JAVA-Klassen im CICS) Stand 2/13/2022 Seite 16

Fakten zum Beispiel 1 • Transaktionsorientiert • Nutzt MQSeries-JAVA-Client im CICS • Wiederverwendung von

Fakten 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 Stand 2/13/2022 Seite 17

2. Beispiel: Nutzung von math. Routinen im CICS (JAVA-Verhalten bei Anzahl Berechnungen und Neustart

2. Beispiel: Nutzung von math. Routinen im CICS (JAVA-Verhalten bei Anzahl Berechnungen und Neustart der CICS-JVM pro Tastendruck (transaktionsorientiert)) Stand 2/13/2022 Seite 18

Fakten zum Beispiel 2 • Umgeschriebenes Applet als CICS-Transaktion • Nutzt weiterhin den unveränderten

Fakten 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“!!! Stand 2/13/2022 Seite 19

3. Beispiel: Antwortzeitverhalten (JAVA-Verhalten bei hoher Benutzerinteraktion) Stand 2/13/2022 Seite 20

3. Beispiel: Antwortzeitverhalten (JAVA-Verhalten bei hoher Benutzerinteraktion) Stand 2/13/2022 Seite 20

Fakten zum Beispiel 3 • Client/Server: Server läuft in Endlosschleife • Der Client arbeitet

Fakten 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-Sourcen unverändert! • CICS-JVM läuft dauerhaft im Speicher (CICS SOS? ? ? ) Stand 2/13/2022 Seite 21

CICS / JAVA Was wäre möglich • Nutzung von CICS (ab Transaction Server 2.

CICS / JAVA Was wäre möglich • Nutzung von CICS (ab Transaction Server 2. 1) für Enterprise JAVA Beans (Session Beans) • Interaktion mit Web. Sphere auf S/390 (künftig mit gem. Adressbereich) Stand 2/13/2022 Seite 22

CICS Roadmap Stand 2/13/2022 Seite 23

CICS Roadmap Stand 2/13/2022 Seite 23

CICS / JAVA Performance • „Hot-Pooling“: Erlaubt HPJ-JAVA-Programmen die selbe LE-Enclave wiederzuverwenden • CICS

CICS / JAVA Performance • „Hot-Pooling“: Erlaubt HPJ-JAVA-Programmen die selbe LE-Enclave wiederzuverwenden • CICS Transaction Server 2. 1: Nutzt neue JVM (die nicht portiert wurde) • Ab V 2. 1 „persistent, reusable JVM“ und JAVA 2 Unterstützung Stand 2/13/2022 Seite 24

JAVA Versionen: Stand 2/13/2022 Seite 25

JAVA Versionen: Stand 2/13/2022 Seite 25

Verfügbarkeit von Funktionen Stand 2/13/2022 Seite 26

Verfügbarkeit von Funktionen Stand 2/13/2022 Seite 26

Performance Stand 2/13/2022 Seite 27

Performance Stand 2/13/2022 Seite 27

Laborumgebung: CICS-NT mit JAVA-Support! Bisherige Host-Anwendungen CICS-Programm-Kommunikation JAVA-Anwendung aus Anw. -Entwicklung JCICS: JAVA-Klassen •

Laborumgebung: CICS-NT mit JAVA-Support! Bisherige Host-Anwendungen CICS-Programm-Kommunikation JAVA-Anwendung aus Anw. -Entwicklung JCICS: JAVA-Klassen • JNI Direct-to-CICS (DTC): C-Schicht mit CICS-APIs CICS System Stand 2/13/2022 Seite 28

JCICS-Klassen aus California DFJCZDTC JNI-CICS-C-Schicht selber zuhause. . . 1/2 Einfacher Fall: TSQ tsq;

JCICS-Klassen aus California DFJCZDTC JNI-CICS-C-Schicht selber zuhause. . . 1/2 Einfacher Fall: TSQ tsq; . . . tsq = new TSQ(); tsq. set. Name("FIRST 001"); try { tsq. write. Item(inhalt. get. Bytes()); EXEC CICS WRITEQ TS QUEUE(. . . ) FROM(daten) LENGTH(len) ITEM (nr) MAIN RESP(rcode); } catch (Throwable t). . . Stand 2/13/2022 Seite 29

JCICS-Klassen aus California DFJCZDTC JNI-CICS-C-Schicht selber zuhause. . . 2/2 Etwas mehr „Gehirn-Jogging“: Task

JCICS-Klassen aus California DFJCZDTC JNI-CICS-C-Schicht selber zuhause. . . 2/2 Etwas mehr „Gehirn-Jogging“: Task my. Task = Task. get. Task(); Terminal. Principal. Facility term = (Terminal. Principal. Facility) my. Task. get. Principal. Facility(); ? ? ? Stand 2/13/2022 Seite 30

Begriffe für die nächste Folie: Bisher war CICS eine geschlossene Umgebung, die keine Calls

Begriffe 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. ==> Einführung eines open TCB’s für die JVM; der sog. J 8 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 J 8 TCB mit einer eigenen JVM jeweils! Die JVM wird beim Transaktionsstart gestartet und bei Ende gelöscht. Der J 8 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. * Stand 2/13/2022 Seite 31

Der Original CICS TS 1. 3 Starter Stand 2/13/2022 Seite 32

Der Original CICS TS 1. 3 Starter Stand 2/13/2022 Seite 32

By the way. . . 1/2 Quasi-reentrant TCB (QR-TCB): • Heute: Alle Anwendungsprogramme laufen

By 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 Speicherbereiche 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)) ==> Heutiger CICS-Code ist nicht threadsafe! Die IBM arbeitet massiv an der vollständigen multithread-CICS-Version. Stand 2/13/2022 Seite 33

By the way. . . 2/2 Open TCB: Eine neue CICS-TCB-Art auch für Anwendungsprogramme

By 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 (wiederverwendung 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 Stand 2/13/2022 Seite 34

 • EJB: „Ist eine nicht-visuelle Komponente einer verteilten, transaktionsorientierten, server-seitigen Anwendung“ • Anwendungsentwickler

• 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 Stand 2/13/2022 Seite 35

Warum im CICS? • Baut auf dem bisherigen Investment auf (best. CICS-Anwendungen) • Evolutionärer

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 Web. Sphere- oder BEA-Know-how erforderlich Stand 2/13/2022 Seite 36

Stand 2/13/2022 Seite 37

Stand 2/13/2022 Seite 37

Stand 2/13/2022 Seite 38

Stand 2/13/2022 Seite 38

EJB Zusammenspiel Stand 2/13/2022 Seite 39

EJB Zusammenspiel Stand 2/13/2022 Seite 39

Redbook: www. redbooks. ibm. com (als PDF Datei verfügbar) SG 245275 -01 Stand 2/13/2022

Redbook: www. redbooks. ibm. com (als PDF Datei verfügbar) SG 245275 -01 Stand 2/13/2022 Seite 40