Verwenden von JCICS

Die Klassen in der JCICS-Bibliothek werden wie normale Java™-Klassen verwendet. Ihre Anwendungen deklarieren eine Referenz des erforderlichen Typs und mit dem Operator new wird eine neue Instanz einer Klasse erstellt.

Informationen zu diesem Vorgang

Um CICS-Ressourcen zu benennen, verwenden Sie die Methode setName. Auf diese Weise wird der Name der zugrundeliegenden CICS-Ressource angegeben. Nach dem Erstellen der Ressource können Sie Objekte mit den Java-Standardkonstrukten manipulieren. Sie können Methoden der deklarierten Objekte auf die übliche Art und Weise aufrufen. Sämtliche Details der unterstützten Methoden für die einzelnen Klassen sind in der bereitgestellten Javadoc verfügbar.

Verwenden Sie in CICS-Java-Programmen keine Beendigungsfunktionen (Finalizer). Eine Erläuterung, warum Finalizer nicht empfohlen werden, finden Sie im IBM SDK für z/OS, Java Technology Edition, Version 7 (siehe Abschnitt Fehlerbehebung).

Beenden Sie CICS-Java-Programme nicht mit dem Aufruf System.exit(). Wenn Java-Anwendungen in CICS ausgeführt werden, wird durch Verwendung eines weiteren Java-Programms (Java-Wrapper) die Methode public static void main() aufgerufen. Wenn Sie den Wrapper verwenden, initialisiert CICS die Umgebung für Java-Anwendungen und, was noch wichtiger ist, bereinigt alle Prozesse, die während der Lebensdauer der Anwendung verwendet wurden. Wenn die JVM beendet wird (selbst wenn dabei der Rückkehrcode 0 zurückgegeben wird), kann diese Bereinigung nicht ausgeführt werden, was zu einer Inkonsistenz der Daten führen kann. Wenn System.exit() verwendet wird, während die Anwendung in einem JVM-Server ausgeführt wird, wird der JVM-Server beendet und CICS wird unverzüglich in den Wartemodus versetzt.

Vorgehensweise

  1. Schreiben Sie die Hauptmethode. CICS versucht, die Kontrolle an die Methode mit der Signatur main(CommAreaHolder) in der Klasse, die mit dem Attribut JVMCLASS der PROGRAM-Ressource angegeben wurde, zu übergeben. Wenn diese Methode nicht gefunden wird, versucht CICS, die Methode main(String[]) aufzurufen.
  2. Gehen Sie wie folgt vor, um ein Objekt mithilfe von JCICS zu erstellen:
    1. Deklarieren Sie eine Referenz:
         TSQ tsq;
       
    2. Verwenden Sie den Operator new, um ein Objekt zu erstellen:
         tsq = new TSQ()
       
    3. Verwenden Sie die Methode setName, um das Objekt zu benennen:
         tsq.setName("JCICSTSQ");
       
  3. Verwenden Sie das Objekt, um mit CICS zu interagieren.

Beispiel

Das folgende Beispiel zeigt, wie ein TSQ-Objekt (TSQ = Temporary Storage Queue, Warteschlange für temporären Speicher) erstellt, die Methode delete für das neu erstellte TSQ-Objekt aufgerufen und die Ausnahmebedingung, die ausgelöst wird, wenn die Warteschlange leer ist, abgefangen wird.
// Definieren eines Paketnamens für das Programm
package unit_test;

// Importieren des JCICS-Pakets
import com.ibm.cics.server.*;

// Deklarieren einer Klasse für eine CICS-Anwendung
public class JCICSTSQ 
{

    // Die Hauptmethode wird aufgerufen, wenn die Anwendung ausgeführt wird
    public static void main(CommAreaHolder cah) 
    {

         try 
         {
             // Erstellen und Benennen eines TSQ-Objekts
             TSQ tsq = new TSQ();
             tsq.setName("JCICSTSQ");

             // Löschen der Warteschlange, falls sie vorhanden ist
             try 
             {
                   tsq.delete();
             } 
             catch(InvalidQueueIdException e) 
             {
                  // Eingliedern von QIDERR
                  System.out.println("QIDERR ignoriert!");
             }

             // Schreiben eines Elements an die Warteschlange
             String transaction = Task.getTask().getTransactionName();
             String message = "Der Name der Transaktion lautet - " + transaction;
             tsq.writeItem(message.getBytes());

         } 
         catch(Throwable t) 
         {
             System.out.println("Nicht erwartetes Element der Throwable-Klasse: " + t.toString());
         }

         // Rückkehr aus der Anwendung
         return;
    }
}