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 machen es einfacher, die Inversion der Steuerung anzuwenden und doppelte Tests einzufügen, sodass Sie die JCICSX -Methodenaufrufe auf Ihrer Workstation während Komponententests mit Frameworks wie Mockito, EasyMockund PowerMocktesten 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 ferne Entwicklung erfordert JCICSX , dass ein Liberty-JVM-Server in CICS eingerichtet wird, um die fernen JCICSx -Anforderungen zu empfangen. Die clientseitigen JCICSX -Tools erstellen eine neue CICS -Task 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 für die Verwendung der Authentifizierung und Berechtigung für JCICSX -Aufrufe konfiguriert werden, und die Kommunikation zwischen dem Client und dem fernen Server kann für die Verwendung von SSL konfiguriert werden. Weitere Informationen finden Sie unter Configuring security for remote JCICSX API development und Configuring SSL (TLS) for remote JCICSX API development.

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 API JCICSX ist standardmäßig in allen CICS JVM-Servern verfügbar.
  • Obligatorisch: Konfigurieren Sie Ihre Kompilierungsumgebung, indem Sie die JCICSX-Abhängigkeit importieren.
Für ferne Entwicklung erforderlich Systemprogrammierer müssen einen Liberty JVM-Server in CICS TS mit aktivierter JCICSX -Serverfunktion (cicsts:jcicsxServer-1.0) konfigurieren.
Beachten Sie, dass JCICSX die ferne Entwicklung für Liberty-Servlets unterstützt.
  1. Richten Sie einen Liberty JVM-Server in einer CICS -Entwicklungsregion ein, für die die Anwendung fern ausgeführt wird. Es wird empfohlen, einen JVM-Server ausschließlich für die ferne Entwicklung zu konfigurieren, damit der ferne JVM-Server und die tatsächlichen JVM-Anwendungsserver eine unterschiedliche Konfiguration haben. Andernfalls kann es zu Konflikten in der Konfiguration kommen. Weitere Informationen finden Sie unter Liberty-JVM-Server konfigurieren.
  2. Fügen Sie das Liberty-Feature cicsts:jcicsxServer-1.0 zur Datei server.xml des Liberty-JVM-Servers hinzu:
    <featureManager>
        <feature>cicsts:jcicsxServer-1.0</feature>
    </featureManager>
  3. Teilen Sie dem Entwickler den Hostnamen und den httpEndpoint -Port dieses Liberty-JVM-Servers mit.
  4. Konfigurieren Sie bei Bedarf die Sicherheit für den fernen 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-Laufzeit auf Ihrer Workstation verwendet, um den Java-Code auszuführen.
  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 Datei server.xml in Ihrem lokalen Liberty-Server mit dem Hostnamen und dem Port des von Ihrem Systemprogrammierer erstellten fernen Liberty-JVM-Servers, der das Feature cicsts:jcicsxServer-1.0 enthält:
    <usr_jcicsxClient serverUri="http://hostname:port"/>
    Wenn der ferne Liberty JVM-Server für die Authentifizierung konfiguriert ist, können Sie das Benutzerkennwort verschlüsseln, indem Sie den Befehl securityUtility verwenden, der im Verzeichnis bin 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 ferne Liberty-JVM-Server SSL-Verbindung für die Datenverschlüsselung verwendet, muss Ihr lokaler Liberty-Server dem Zertifikat des fernen Servers vertrauen. Anweisungen für Anwendungsentwickler finden Sie im Abschnitt SSL (TLS) für ferne JCICSX-API-Entwicklung konfigurieren.
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-JVM-Server für die ferne Entwicklung aktiviert ist, können Sie den Anwendungscode in Ihrem lokalen Liberty-Server ausführen, um zu überprüfen, wie sich Ihr Code verhält, wenn er in CICS ausgeführt wird, oder Sie können untersuchen, welche Informationen in den API-Befehlen zurückgegeben werden, indem Sie ferne Aufrufe an eine CICS -Region absetzen. Wenn Sie Ihre Anwendung im lokalen Liberty-Server ausführen, werden alle JCICSX -Aufrufe automatisch an Ihre CICS -Region umgeleitet. Wenn Ihre Anwendung auf einem JVM-Server implementiert wird, der in einer realen CICS ausgeführt wird, werden dieselben JCICSX -Aufrufe direkt für CICSausgeführt.

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. Dies kann Probleme um verschiedene Anwendungen verringern, die miteinander in Konflikt stehen, wenn sie auf einem gemeinsam genutzten JVM-Server in einer CICS -Entwicklungsregion ausgeführt werden.

Wenn Sie planen, Anwendungen auf einem Liberty-JVM-Server zu implementieren, der in CICS TS ausgeführt wird, finden Sie unter Hinweise zu einer gemeinsam genutzten JVM bewährte Verfahren.

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 auftritt, der sich auf CICS bezieht, beispielsweise der ferne JVM-Server oder die CICS -Transaktion, wird ein Antwortcode (RESP) zurückgegeben. Der Systemprogrammierer kann die Traces und Protokolle des JVM-Servers für das Debugging 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.