CICS-Java-Anwendung ausführen- (1) Führen Sie eine einfache Beispielanwendung aus

Einführung

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.

In Verbindung stehender Artikel

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

Umweltinformationen

Entwicklungsumgebung Windows10 CICS Explorer V5.6(Beta)

** Ausführungsumgebung ** z/OS V2.4 CICS Transaction Server for z/OS V5.6(Beta)

Informationen zur Java-Unterstützung für CICS

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. image.png

Vorbereitungen

Entwicklungsumgebung

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. image.png

Ausführungsumgebung

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.

JVM-Profil

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.

JVM-Serverdefinition

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)         

Paketverzeichnis

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 /.

Beispiel für die Funktionsprüfung der Anwendung

Referenz: Java-Beispiele: JCICS-Beispiele

Beispielprojekt erstellen

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. image.png

Wählen Sie die CICS-Zielversion in der Vorlage aus. Wählen Sie hier CICS TS V5.6. image.png

Überprüfen Sie den hinzugefügten CICS TS 5.6 und wenden Sie ihn an. image.png

Wählen Sie in der Java-Perspektive Datei-Neu-Andere aus dem Menü image.png

Wählen Sie das OSGi-Beispiel für das CICS-Bundle aus image.png

Weiter so wie es ist image.png

Ende wie es ist image.png

Ein Beispielprojekt wird erstellt. image.png

Überprüfen Sie den Inhalt der Probe

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. image.png

Öffnen Sie com.ibm.cics.server.examples.hello.osgibundle. image.png

Ü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.

Stellen Sie Ihre Anwendung in CICS bereit

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 image.png

Wählen Sie Exportieren an einen bestimmten Speicherort im Dateisystem und Weiter image.png

Geben Sie das Verzeichnis zum Anordnen der zuvor erstellten Bundle-Datei an und beenden Sie das Programm image.png

Überprüfen Sie die Nachricht image.png 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. image.png

Beispielausführung

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. image.png 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

CICS-Java-Anwendung ausführen- (1) Führen Sie eine einfache Beispielanwendung aus
Ein einfaches Beispiel für Rückrufe in Java
Erstellen Sie ein Docker-Image, um eine einfache Java-App auszuführen
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
[Java] Zeichnen Sie ein einfaches Muster
So stellen Sie eine einfache Java-Servlet-App auf Heroku bereit
Ein einfaches CRUD-Beispiel mit Java Servlet / JSP und MySQL
3 Implementieren Sie einen einfachen Interpreter in Java
Ich habe eine shopify App @java erstellt
Führen Sie Java-Anwendungen in Azure Batch aus
Greifen Sie über eine Java-Anwendung auf Teradata zu
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
Erstellen Sie mit Dropwizard eine einfache Webanwendung
Ein einfaches Beispiel für ArBiMap (Zwei-Wege-Karte)
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
Erstellen Sie eine TODO-App in Java 7 Create Header
Lassen Sie uns eine Taschenrechner-App mit Java erstellen
Stellen Sie eine Java-Web-App für Heroku bereit
[Azure] Ich habe versucht, eine Java-App für die Erstellung von kostenlosen Web-Apps zu erstellen. [Anfänger]
Einfaches Beispiel für einen Rückruf im Beispiel einer anonymen Java Part2-Klasse
Erstellen Sie mit Spring Boot eine einfache Such-App
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Java Ich habe versucht, einen einfachen Block zu brechen
Eine Sammlung einfacher Fragen für Java-Anfänger
SSH-Verbindung mit SSHJ aus der Java6-App
Java-Beispielcode 02
Java-Beispielcode 03
Java 9+ Anwendungsstatus
Selenprobe (Java)
Java GUI Beispiel
Java-Beispielcode 01
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
So führen Sie die SpringBoot-App als Dienst aus
[Tutorial] Eclipse herunterladen → Anwendung mit Java ausführen (Plejaden)
Üben Sie das Erstellen einer einfachen Chat-App mit Docker + Sinatra
[Tutorial] Eclipse herunterladen → Webanwendung mit Java ausführen (Plejaden)
[Persönliches Memo] Erstellen Sie eine einfache, tiefe Kopie mit Java
Lass uns einen Roboter bauen! "Eine einfache Demo von Java AWT Robot"
Entwickeln Sie eine Java-Anwendung, die Amazon SQS verwendet (Teil 1).
Erstellen Sie eine JAVA WEB App und probieren Sie OMC APM aus
Entwickeln Sie eine Java-Anwendung, die Amazon SQS verwendet (Teil 2).
Java11: Führen Sie Java-Code unverändert in einer einzelnen Datei aus