Java-Entwicklung mit JCICSX

Mit den JCICSX-API-Klassen können Sie über eine Java™ -API auf CICS® -Services zugreifen. Sie unterstützen eine Untergruppe der CICS -Funktionalität, können über Fernzugriff ausgeführt werden und sind einfacher zu testen und zu stuben als die Java-Klassen von JCICS. Die JCICSX-API-Klassen können zusammen mit der JCICS-API verwendet werden, aber nur die Befehle, die JCICSX verwenden, können von diesen erweiterten Funktionen profitieren.

Inhaltsverzeichnis

Warum JCICSXverwenden?

Die JCICSX-API-Klassen erweitern Teile der JCICS-API mit der Funktionalität für ferne Entwicklung und Mocking. Sie haben die folgenden Vorteile:
  • Die Klassen ermöglichen einfaches Mocking und Stubbing. Die JCICSX-API-Klassen erleichtern die Anwendung der Umkehrung der Kontrolle und das Einfügen von Testdopplungen, sodass Sie die JCICSX-Methodenaufrufe auf Ihrer Workstation während der Komponententests mithilfe von Frameworks wie Mockito, EasyMock, und PowerMock nachahmen können.
  • Die Klassen können über Fernzugriff in Entwicklungsumgebungen ausgeführt werden. Sie können Links zu Programmen erstellen oder Daten über Kanäle und Container in einer fernen CICS -Region übergeben, indem Sie CICS -Java-Anwendungen auf Ihrer lokalen Workstation ausführen, ohne die Anwendungen wiederholt in CICSimplementieren zu müssen. Außerdem ist keine Änderung am Anwendungscode erforderlich, unabhängig davon, ob er in CICS oder auf Ihrer lokalen Workstation ausgeführt wird.
  • Die Syntax ist für Java-Entwickler, die mit neueren Java-Konstruktoren besser vertraut sind, vereinfacht und natürlich.
  • Sie können die Funktionalität moderner Java-IDEs nutzen, z. B. Inhaltshilfe, Debugging, intelligente Navigation und Hot-Swapping. Dies wird durch die Unterstützung von Mocking und ferner Entwicklung in einer lokalen IDE erreicht, einschließlich IntelliJ und Eclipse.
  • Code, der mit den JCICSX-API-Klassen geschrieben wurde, kann unverändert ausgeführt werden, sowohl im fernen Entwicklungsmodus als auch bei der Implementierung zur Ausführung in CICS.
  • Es ist mit der JCICS-API kompatibel. JCICSX-API-Klassen können neben der JCICS-API in demselben Programm verwendet werden, aber nur reine JCICSX -Programme können von den erweiterten Funktionen wie der fernen Entwicklung profitieren. Wenn Sie beispielsweise JCICS und JCICSX in demselben Programm mischen, können Sie es nicht fern in Ihrer Entwicklungsumgebung ausführen.

Einschränkungen für JCICSx

Die JCICSX-API-Klassen unterstützen nur eine Untergruppe der CICS -Funktionalität, die einige der gängigsten Szenarios für die Verwendung von Java in CICSadressiert, wobei der Schwerpunkt auf der Verknüpfung mit CICS -Programmen mithilfe von Kanälen und Containern liegt. Weitere Informationen hierzu finden Sie im Abschnitt Anhänge. Wenn Sie Funktionen über diesen Bereich hinaus verwenden müssen, ziehen Sie die Verwendung der JCICS-APIin Betracht.

Clientseitige Tools sind zunächst verfügbar, damit Liberty-Benutzer JCICSX verwenden können, um über ein Servlet auf CICS zuzugreifen.

JCICSX-API-Klassen funktionieren in Worker-Threads, die als Teil eines asynchronen Servlets zugeteilt werden, nicht ordnungsgemäß.

Sicherheitsmodell von JCICSX

Für die Remote-Entwicklung muss für JCICSX ein Liberty- JVM -Server in CICS eingerichtet werden, um die Remote-JCICSX -Anfragen zu empfangen. Das clientseitige JCICSX-Tool erstellt eine neue Aufgabe „ CICS “ mit einem Aufruf an den Server. Nachfolgende JCICSX -Anforderungen von diesem Client werden unter derselben Task ausgeführt und müssen von demselben Benutzer ausgegeben werden. Dies ist transparent, wenn die clientseitigen Tools verwendet werden. Der Liberty- JVM -Server kann so konfiguriert werden, dass er Authentifizierung und Autorisierung für JCICSX -Anrufe verwendet, und die Kommunikation zwischen dem Client und dem Remote-Server kann so konfiguriert werden, dass sie „ SSL ” verwendet. Weitere Informationen finden Sie unter „Konfigurieren der Sicherheit für die Remote-Entwicklung mit JCICSX API “ und „Konfigurieren von SSL ( TLS ) für die Remote-Entwicklung mit JCICSX API “.

In anderen Fällen, z. B. wenn die Anwendungen zur Ausführung in CICSbereitgestellt werden, übernimmt JCICSX ein identisches Sicherheitsmodell wie JCICS.

Umgebung für JCICSX konfigurieren

Konfigurieren Sie Ihre Umgebung für JCICSX wie folgt:
  • Wenn Sie JCICSX für ferne Entwicklung verwenden möchten, ist eine zusätzliche Konfiguration erforderlich, um die unterstützende Infrastruktur in CICS und auf Ihrer lokalen Workstationeinzurichten. Beachten Sie, dass die unterstützende Infrastruktur in CICS nur in Entwicklungsregionen erforderlich ist. Die JCICSX -API ist standardmäßig in allen CICS JVM -Servern verfügbar.
  • Obligatorisch: Konfigurieren Sie Ihre Kompilierungsumgebung, indem Sie die JCICSX-Abhängigkeit importieren.
Für die Remote-Entwicklung erforderlich Systemprogrammierer müssen einen Liberty- JVM -Server in CICS TS konfigurieren, wobei die JCICSX -Serverfunktion (cicsts:jcicsxServer-1.0) aktiviert sein muss
Beachten Sie, dass JCICSX die ferne Entwicklung für Liberty-Servlets unterstützt.
  1. Richten Sie einen Liberty- JVM -Server in einer Entwicklungs CICS -Region ein, auf dem die Anwendung remote ausgeführt wird. Es wird empfohlen, einen JVM -Server ausschließlich für die Remote-Entwicklung einzurichten, damit der Remoting- JVM -Server und die eigentlichen Anwendungs- JVM -Server unterschiedliche Konfigurationen haben können. Andernfalls kann es zu Konflikten in der Konfiguration kommen. Weitere Informationen finden Sie unter Einrichten eines Liberty- JVM -Servers.
  2. Fügen Sie die cicsts:jcicsxServer-1.0 Liberty-Funktion zur Datei des Liberty- JVMserver.xml -Servers hinzu:
    <featureManager>
        <feature>cicsts:jcicsxServer-1.0</feature>
    </featureManager>
  3. Teilen Sie dem Entwickler den Hostnamen und httpEndpoint den Port dieses Liberty- JVM -Servers mit.
  4. Konfigurieren Sie bei Bedarf die Sicherheit für den Remote-Liberty- JVM -Server. Siehe Sicherheit für ferne JCICSX-API-Entwicklung konfigurieren.
Für ferne Entwicklung erforderlich Entwickler konfigurieren die lokale Entwicklungsumgebung so, dass Java-Code lokal ausgeführt und ferne Aufrufe für JCICSX abgesetzt werden.
  1. Wenn Sie keine Liberty-Laufzeit auf Ihrer lokalen Workstation haben, installieren Sie eine solche, z. B. WebSphere Liberty Web Profile. Es muss Liberty 19.0.0.3 oder höher sein. Weitere Informationen finden Sie unter WebSphere Liberty für Entwickler.
  2. Installieren Sie das Liberty-Feature jcicsxClient-1.0 in der allgemeinen Liberty-Laufzeit auf Ihrer lokalen Workstation. Navigieren Sie in einer Befehlszeile zum Verzeichnis bin Ihres lokalen Liberty-Servers und geben Sie den BefehlinstallUtilityein:
    installUtility install jcicsxClient-1.0 jsonp-1.0
  3. Erstellen Sie einen lokalen Liberty- JVM -Server, der die Liberty-Laufzeitumgebung auf Ihrer Workstation zum Ausführen des Java-Codes verwendet.
  4. Aktivieren Sie das Feature jcicsxClient-1.0 in Ihrem lokalen Liberty-Server, indem Sie Folgendes zu Ihrem server.xmlhinzufügen:
    <featureManager>
        <feature>usr:jcicsxClient-1.0</feature>
    </featureManager>
  5. Konfigurieren Sie die server.xml Datei in Ihrem lokalen Liberty-Server mit dem Hostnamen und Port des Remote-Liberty-Servers JVM, den Ihr Systemprogrammierer erstellt hat und der die cicsts:jcicsxServer-1.0 Funktion enthält:
    <usr_jcicsxClient serverUri="http://hostname:port"/>
    Wenn der Remote-Liberty- JVM -Server für die Verwendung der Authentifizierung konfiguriert ist, können Sie das Benutzerkennwort mithilfe des Befehls „ securityUtility “ verschlüsseln, der im bin Verzeichnis des lokalen Liberty-Servers bereitgestellt wird. Ihr Snippet könnte wie folgt aussehen:
    <usr_jcicsxClient serverUri="http://hostname:port">
        <basicAuthentication user="myUser" password="{aes}ADwac72WXpSCr2YDUv3hHgjfOa0moXZDj626MmM4DbtT"/>
    </usr_jcicsxClient>
  6. Wenn der Remote-Liberty- JVM -Server eine SSL -Verbindung für die Datenverschlüsselung verwendet, muss Ihr lokaler Liberty-Server dem Zertifikat des Remote-Servers vertrauen. Anweisungen für Anwendungsentwickler finden Sie unter „Konfigurieren von SSL ( TLS ) für die Remote-Entwicklung der JCICSX-API “.
Erforderliche Entwickler lösen die JCICSX -Abhängigkeit auf
Die JCICSX-API-Klassen sind in CICS TS neben der JCICS-API in CICS TS 5.6 oder höher verfügbar. Sie können JCICSX-API-Klassen von einer der folgenden Positionen importieren:
  1. Die Buildpfadbibliothek, die mit IBM® CICS SDK for Java in IBM CICS Explorer® für Aqua 3.21 (Fixpack 5.5.0.9) oder höher bereitgestellt wird.

    Wenn Sie mit CICS Explorer eine Bibliothek zu Ihrem Projekt hinzufügen, ist JCICSX automatisch als API in Ihrem Client verfügbar. Lesen Sie Schritt 1 im Abschnitt Dynamisches Webprojekt erstellen , um Ihr dynamisches Webprojekt für CICS TS als Ziel zu konfigurieren. Wenn Sie CICS Explorernicht installiert haben, installieren Sie es wie in Entwicklungsumgebung einrichtenbeschrieben.

  2. Das com.ibm.cics.jcicsx -Artefakt in Maven Central Wenn Sie Gradle oder Maven nicht installiert haben, installieren Sie beide wie unter Entwicklungsumgebung einrichtenbeschrieben.

    Wenn Ihr Unternehmen lokal gehostete oder aufgelistete Repositorys verwendet, können Sie Tools wie JFrog Artifactory oder Sonatype Nexus verwenden, um das Artefakt zu konfigurieren, das aus diesen Repositorys abgerufen werden soll.

  3. Die mit CICS bereitgestellte Datei com.ibm.cics.jcicsx.jar im Verzeichnis USSHOME , die Sie in Ihre Kompilierungsumgebung kopieren können. Weitere Informationen finden Sie unter Java-Bibliotheken manuell importieren.

Anwendungsfälle und Beispiele für JCICSX

Nach Abschluss der Konfiguration können Sie mit der Codierung für die JCICSX-API-Klassenbeginnen.

Während Komponententests können Sie die JCICSX -Methodenaufrufe auf Ihrer Workstation mithilfe vertrauter Testframeworks testen.

Wenn der Liberty-Server „ JVM “ für die Remote-Entwicklung aktiviert ist, können Sie den Anwendungscode auf Ihrem lokalen Liberty-Server ausführen, um zu überprüfen, wie sich Ihr Code bei der Ausführung in „ CICS “ verhält, oder um zu erkunden, welche Informationen bei den API-Befehlen zurückgegeben werden, indem Sie Remote-Aufrufe an eine „ CICS “-Region senden. Wenn Sie Ihre Anwendung auf dem lokalen Liberty-Server ausführen, werden alle JCICSX -Aufrufe automatisch an Ihre Region „ CICS “ weitergeleitet. Wenn Ihre Anwendung auf einem JVM -Server bereitgestellt wird, der in einer echten CICS -Region ausgeführt wird, werden dieselben JCICSX -Aufrufe direkt an CICS gesendet.

Typische Anwendungsfälle von JCICSX werden in JCICSX-Beispielengezeigt. Details zu allen JCICSX-API-Klassenfinden Sie unter JCICSX Javadoc.

Empfohlene Methoden

Bei der Entwicklung mit JCICSXsollten Sie Ihren Code auf einem lokalen Liberty-Server auf Ihrer Workstation ausführen. Dadurch können Probleme mit Konflikten zwischen verschiedenen Anwendungen reduziert werden, die auf einem gemeinsam genutzten JVM -Server in einer CICS -Entwicklungsregion ausgeführt werden.

Wenn Sie Anwendungen auf einem Liberty- JVM -Server bereitstellen möchten, der unter CICS TS ausgeführt wird, finden Sie bewährte Verfahren unter Überlegungen zu einer gemeinsam genutzten JVM.

Fehlerbehebung

Sie können den Debugger, die Konsolennachricht und die Fehlerbehandlungsinformationen Ihrer Java-IDE verwenden, um Ihre Anwendungen zu debuggen. JCICSX ermöglicht auch mehreren Clients das gleichzeitige Debugging. Darüber hinaus können Sie die CEDX-Transaktion zum Testen Ihres Anwendungsprogramms in CICSverwenden.

Wenn ein Fehler im Zusammenhang mit CICS auftritt, beispielsweise beim Remote- JVM -Server oder bei der Transaktion CICS, wird ein Antwortcode (RESP) zurückgegeben. Der Systemprogrammierer kann die Traces und Protokolle des JVM -Servers zum Debuggen verwenden. Weitere Informationen finden Sie unter Fehlerbehebung für Java-Anwendung.

Anhänge

Anlage 1. JCICSX-API-Klassen
Die JCICSX-API-Klassen unterstützen eine Untergruppe der CICS -Funktionalität wie folgt: Details zu jeder Klasse finden Sie unter JCICSX Javadoc.
Tabelle 1. JCICSX-API-Klassen
Klassen Beschreibung
CICS-Kontext Die Umgebung, in der die API ausgeführt wird. Eingangspunkt zur API JCICSX .
Kanal Erstellen oder löschen Sie einen Kanal oder rufen Sie Informationen zu den Containern darin ab.
Container Erstellen eines Containers, Abrufen von Informationen zu einem Container, Abrufen von Daten aus einem Container und Einreihen von Daten in einen Container oder Löschen eines Containers.
ProgramLinker Link zu einem Programm.
Anlage 2. Zuordnung zwischen JCICSX und EXEC CICS -API-Befehlen
Diese Tabelle zeigt, wie JCICSX -API-Methoden EXEC CICS-API-Befehlen zugeordnet werden. Es werden nur Methoden mit Zuordnungsbeziehungen aufgelistet.
Tabelle 2. Zuordnung zwischen JCICSX und EXEC CICS -API-Befehlen
Klassen Methoden EXEC CICS API-Befehle
BITContainer
CHARContainer
WritableBITContainer
WritableCHARContainer
WritableContainer
append EXEC CICS PUT64 CONTAINER APPEND
put EXEC CICS PUT64 CONTAINER
Channel
exists
getContainerCount
EXEC CICS QUERY CHANNEL
delete EXEC CICS DELETE CHANNEL
iterator
EXEC CICS STARTBROWSE CONTAINER

EXEC CICS GETNEXT CONTAINER
EXEC CICS ENDBROWSE CONTAINER
ChannelProgramLinker link EXEC CICS LINK PROGRAM
Container delete EXEC CICS DELETE CONTAINER CHANNEL
getLength EXEC CICS GET CONTAINER CHANNEL NODATA
ProgramLinker
link
EXEC CICS LINK PROGRAM
ReadableBITContainer get EXEC CICS GET64 CONTAINER
read EXEC CICS GET64 CONTAINER
ReadableCHARContainer
ReadableContainer
get EXEC CICS GET64 CONTAINER
1 Aqua bezieht sich auf IBM Explorer for z/OS® Aqua.