Es wird häufig von Anwendungsentwicklungssprachen für CICS Transaction Server für z / OS, COBOL, PL / I und Asembler gesprochen, aber Java wird seit langem unterstützt. Dies bedeutet, dass Sie CICS-Anwendungen in Java schreiben können. Es wird eine Java-Klassenbibliothek (JCICS) bereitgestellt, die dem EXEC CICS-Befehl entspricht, sodass Sie Java-Methoden verwenden können, um Vorgänge wie EXEC CICS LINK oder EXEC CICS START auszuführen. Hier werde ich versuchen, das Beispiel einer CICS-Java-Anwendung (OSGi-kompatibel) tatsächlich auszuführen.
CICS-Java-Anwendung ausführen - (1) Einfache Beispiel-App ausführen CICS-Java-Anwendung ausführen - (2) Build-Verwaltung durch Maven CICS-Java-Anwendung ausführen - (3) Build-Verwaltung von Gradle CICS-Java-Anwendung ausführen - (4) Spring Boot-Anwendung
Entwicklungsumgebung Windows10 CICS Explorer V5.6(Beta)
** Ausführungsumgebung ** z/OS V2.4 CICS Transaction Server for z/OS V5.6(Beta)
Lassen Sie uns die Java-Unterstützung für CICS überprüfen. CICS unterstützt OSGi-kompatible Java-Anwendungen. Um eine in Java implementierte CICS-App auszuführen, ist das folgende Verfahren erforderlich.
** Laufzeitvorbereitung **
Entwicklung von Die Entwicklungsarbeit erfolgt mit dem kostenlosen Eclipse-basierten Tool "CICS Explorer". Erstellen Sie eine Java-App, die die JCICS-Bibliothek importiert, und verpacken Sie sie in Form eines OSGi-Bundles (wie eine Erweiterung eines JAR). (Referenz: OSGI-Übersicht) Zu diesem Zeitpunkt muss die erste Logik, die als CICS-Programm erkannt wird, in der Hauptfunktion implementiert sein. Packen Sie einige OSGi-Bundles in Einheiten, die als "CICS-Bundles" bezeichnet werden.
** Bereitstellen ** Übertragen Sie das CICS-Bundle auf die USS des z / OS der Ausführungsumgebung. Erstellen Sie eine BUNDLE-Definition in der Ressourcendefinition der CICS-Region und lassen Sie sie das auf USS übertragene CICS-Bundle (Java-App) erkennen. Erstellen Sie eine PROGRAMM-Definition in der Ressourcendefinition der CICS-Region und registrieren Sie die in BUNDLE enthaltene Java-Klasse als CICS-Programm.
Die Beziehung zwischen jeder CICS-Ressourcendefinition und der Entität ist wie folgt.
Laden Sie ein Eclipse-basiertes Tool namens CICS Explorer herunter und richten Sie es ein, indem Sie auf die folgenden Bereiche verweisen. Referenz: CICS Explorer herunterladen und starten
Konfigurieren Sie als Hostverbindungsdefinition eine FTP-Verbindung für das z / OS, auf dem das Ziel-CICS ausgeführt wird.
Bereiten Sie eine CICS-Region vor, um das Beispiel auszuführen. Im Moment verwenden wir die Region ** CT56B4A1 **. Fügen Sie eine Ressource namens JVMServer hinzu, um Java-Anwendungen auszuführen.
Bereiten Sie das JVM-Profil auf USS vor. (Die mit JVMServer verbundenen Eigenschaften werden effektiv in der Datei auf dieser USS angegeben. Die JVMSERVER-Ressourcendefinition zeigt auf den Dateinamen dieses JVM-Profils.) Ein Beispiel wird mitgeliefert. Kopieren Sie es und verwenden Sie es.
Erstellen Sie ein Verzeichnis mit dem Namen / var / cicsts / cicsts56 / CT56B4A1 / JVMProfiles und kopieren Sie /usr/lpp/cicsts/cicsts56/JVMProfiles/DFHOSGI.jvmprofile (Beispieldefinition für OSGi im CCD-Installationsverzeichnis) dorthin. Machen. Passen Sie es an Ihre Umgebung an.
DFHOSGI.jvmprofile Auszug
JAVA_HOME=/usr/lpp/java/J8.0_64/
WORK_DIR=/var/cicsts/cicsts56/CT56B4A1/work
-Xms32M
-Xmx256M
-Xmso1M
-Xgcpolicy:gencon
-Xscmx256M
-Xshareclasses:name=cicsts%g,groupAccess,nonfatal
-Xtune:virtualized
-Dcom.ibm.tools.attach.enable=no
_BPXK_DISABLE_SHLIB=YES
SIT
Geben Sie im SIT-Parameter "JVMPROFILEDIR" das Verzeichnis an, in dem sich die obige Eigenschaftendatei befindet.
JVMPROFILEDIR=/var/cicsts/cicsts56/CT56B4A1/JVMProfiles
Starten Sie die Region neu, damit die Änderungen wirksam werden.
Bereiten Sie die JVMSERVER-Ressourcendefinition vor. Kopieren Sie die JVMSERVER-Definition "DFHJVMS" in der vom Produkt bereitgestellten Gruppe DFH $ OSGI in eine entsprechende Gruppe und installieren Sie sie.
OBJECT CHARACTERISTICS CICS RELEASE = 0730
CEDA View JVmserver( DFHJVMS )
JVmserver : DFHJVMS
Group : TAG$OSGI
DEScription : CICS JVM server to run OSGi samples
Status : Enabled Enabled | Disabled
Jvmprofile : DFHOSGI (Mixed Case)
Lerunopts : DFHAXRO
Threadlimit : 015 1-256
DEFINITION SIGNATURE
DEFinetime : 06/02/20 17:28:17
CHANGETime : 06/02/20 17:28:17
CHANGEUsrid : CICSUSER
CHANGEAGEnt : CSDApi CSDApi | CSDBatch
CHANGEAGRel : 0730
Es ist in Ordnung, wenn es unter CEMT I JVMSERVER aktiviert ist.
I JVMS
STATUS: RESULTS - OVERTYPE TO MODIFY
Jvm(DFHJVMS ) Ena Prf(DFHOSGI ) Ler(DFHAXRO )
Threadc(000) Threadl( 015 ) Cur(9965280)
Erstellen Sie ein Verzeichnis auf USS, um die Bundle-Datei zu platzieren.
Hier erstellen wir ein Verzeichnis mit dem Namen / var / cicsts / cicsts56 / CT56B4A1 / bundles /
.
Referenz: Java-Beispiele: JCICS-Beispiele
Wählen Sie im CICS Explorer-Menü Fenstereinstellungen, um das Einstellungsfenster zu öffnen. Plugin-Entwicklung - Wählen Sie Ihre Zielplattform aus und klicken Sie auf Hinzufügen.
Wählen Sie die CICS-Zielversion in der Vorlage aus. Wählen Sie hier CICS TS V5.6.
Überprüfen Sie den hinzugefügten CICS TS 5.6 und wenden Sie ihn an.
Wählen Sie in der Java-Perspektive Datei-Neu-Andere aus dem Menü
Wählen Sie das OSGi-Beispiel für das CICS-Bundle aus
Weiter so wie es ist
Ende wie es ist
Ein Beispielprojekt wird erstellt.
In diesem Projekt werden mehrere Beispiel-Apps bereitgestellt. Schauen wir uns jedoch die einfachste Hello World-Quelle an. (examples.hello.HelloCICSWorld.java im com.ibm.cics.server.examples.hello-Projekt (OSGi-Bundle) enthalten)
HelloCICSWorld.java
package examples.hello;
import com.ibm.cics.server.CommAreaHolder;
import com.ibm.cics.server.Task;
public class HelloCICSWorld
{
public static void main(CommAreaHolder CAH)
{
Task t = Task.getTask();
if ( t == null )
System.err.println("HelloCICSWorld example: Can't get Task");
else
t.out.println("Hello from a Java CICS application");
}
}
JCICS com.ibm.cics.server.Task wird verwendet. Task.out bedeutet PrintWriter für die Terminalausgabe, daher ist es eine Logik, eine einfache Zeichenfolge an das Terminal zu senden. Referenz: [Javadoc - Aufgabe](https://www.ibm.com/support/knowledgecenter/SSGMCP_5.6.0/reference-javadocs/jcics-javadoc/com/ibm/cics/server/Task.html?view=embed# aus)
Lassen Sie uns META-INF / MANIFEST.MF desselben Projekts überprüfen.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Hello Plug-in
Bundle-SymbolicName: com.ibm.cics.server.examples.hello
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: J2SE-1.4,
J2SE-1.5,
JavaSE-1.6
Import-Package: com.ibm.cics.server;version="[1.0.0,2.0.0)"
CICS-MainClass: examples.hello.HelloCICSWorld, examples.hello.HelloWorld
In der Spezifikation von CICS-MainClass wird die Klasse mit der Hauptmethode angegeben. Die Hauptmethode der hier angegebenen Klasse kann als CICS-Programm erkannt werden (sie kann mit der Programmdefinition verknüpft werden).
Schauen Sie sich das CICS-Bundle-Projekt mit dem Namen com.ibm.cics.server.examples.bundle an. Wenn Sie META-INF / cics.xml im CICS Bundle Manifest Editor öffnen, sehen Sie, dass es das obige OSGi-Bundle enthält.
Öffnen Sie com.ibm.cics.server.examples.hello.osgibundle.
Überprüfen Sie den hier angegebenen Wert von jvmserver. Sie müssen den Namen der JVMSERVER-Definition angeben, die Sie hier ausführen möchten. Ändern Sie es entsprechend dem Namen der JVMSERVER-Definition, die in der Vorbereitung erstellt wurde. Wenn Sie die Beispieldefinition mit demselben Namen kopieren, handelt es sich um DFHJVMS, sodass Sie sie nicht ändern müssen.
Die Bereitstellung in CICS erfolgt in Einheiten von "CICS-Bundles". Klicken Sie mit der rechten Maustaste auf das Projekt com.ibm.cics.server.examples.bundle und klicken Sie auf Bundle-Projekt in z / OS UNIX-Dateisystem exportieren
Wählen Sie Exportieren an einen bestimmten Speicherort im Dateisystem und Weiter
Geben Sie das Verzeichnis zum Anordnen der zuvor erstellten Bundle-Datei an und beenden Sie das Programm
Überprüfen Sie die Nachricht Die Bundle-Datei wurde auf USS abgelegt.
Kopieren Sie jede Ressource der von CICS bereitgestellten DFH $ OSGI-Gruppe in eine entsprechende Gruppe.
Passen Sie die BUNDLE-Definition "DFH $ OSGB" an und setzen Sie den Wert von BUNDLEDIR auf das Verzeichnis, in dem sich die Bundle-Datei oben befindet (/var/cicsts/cicsts56/CT56B4A1/bundles/com.ibm.cics.server.examples.bundle_1). Durch 0.0
) ersetzen.
OVERTYPE TO MODIFY CICS RELEASE = 0730
CEDA ALter Bundle( DFH$OSGB )
Bundle : DFH$OSGB
Group : TAG$OSGI
DEScription ==> CICS bundle containing OSGi sample bundles
Status ==> Enabled Enabled | Disabled
BUndledir ==> /var/cicsts/cicsts56/CT56B4A1/bundles/com.ibm.cics.server.
(Mixed Case) ==> examples.bundle_1.0.0
==>
==>
==>
BAsescope ==>
(Mixed Case) ==>
==>
==>
==>
DEFINITION SIGNATURE
DEFinetime : 06/02/20 18:27:37
CHANGETime : 06/02/20 18:27:37
Stellen Sie sicher, dass es installiert und aktiviert ist.
I BUNDLE
STATUS: RESULTS - OVERTYPE TO MODIFY
Bun(DFH$OSGB) Ena Par(00003) Tar(00003)
Enabledc(00003) Bundlei(com.ibm.cics.server.exampl)
Wenn Sie die Ressourcendefinition mit CICS Explorer überprüfen, können Sie übrigens nicht nur die BUNDLE-Definition, sondern auch die in BUNDLE enthaltenen BUNDLE-TEILE überprüfen.
Dieses Mal führen wir das Hello World-Beispiel aus, sodass wir zusätzliche Ressourcendefinitionen für dieses Beispiel installieren. Referenz: Ausführen des Hello World-Beispiels
Die Programmdefinition "DFJ $ JHE2" und die Transaktionsdefinition "JHE2". Das eigentliche Java-Programm ist bereits als BUNDLE installiert. Beide werden in DFH $ OSGI bereitgestellt. Kopieren Sie sie also und installieren Sie sie so, wie sie sind. Übrigens, wenn Sie sich die Definition von DFH $ JHE2 ansehen,
OBJECT CHARACTERISTICS CICS RELEASE = 0730
CEDA View PROGram( DFJ$JHE2 )
PROGram : DFJ$JHE2
Group : TAG$OSGI
DEScription : OSGi Hello CICS world sample program
Language : CObol | Assembler | Le370 | C | Pli
RELoad : No No | Yes
RESident : No No | Yes
USAge : Normal Normal | Transient
USElpacopy : No No | Yes
Status : Enabled Enabled | Disabled
RSl : 00 0-24 | Public
CEdf : Yes Yes | No
DAtalocation : Any Below | Any
EXECKey : Cics User | Cics
COncurrency : Required Quasirent | Threadsafe | Required
Api : Cicsapi Cicsapi | Openapi
REMOTE ATTRIBUTES
DYnamic : No No | Yes
REMOTESystem :
REMOTEName :
Transid :
EXECUtionset : Fullapi Fullapi | Dplsubset
JVM ATTRIBUTES
JVM : Yes No | Yes
JVMClass : examples.hello.HelloCICSWorld
(Mixed Case) :
:
:
:
JVMServer : DFHJVMS
JVMProfile : (Mixed Case)
JAVA PROGRAM OBJECT ATTRIBUTES
Hotpool : No No | Yes
...
So wird JVM: Ja, JVMClass: examples.hello.HelloCICSWorld, JVMServer: DFHJVMS angegeben (von BUNDLE PARTS installierte Klassen). * Wenn der zuvor erstellte JVM-Servername unterschiedlich ist, korrigieren Sie ihn bitte entsprechend.
Nachdem die Ressourcen vorhanden sind, können Sie sie ausführen. Führen Sie eine JHE2-Transaktion von einem CICS-Terminal aus. Die vom Java-Programm Hello aus einer Java CICS-Anwendung ausgegebene Zeichenkette wird angezeigt! Dies bestätigt, dass Java als CICS-Programm gearbeitet hat.
Recommended Posts