CICS® は、スレッド・セーフ Java アプリケーションを実行するための JVM サーバー環境を提供します。 スレッド・セーフではないアプリケーションは、JVM サーバーを利用することはできません。
JVM サーバーは、単一の JVM でタスクを実行できるランタイム環境です。 この環境はそれぞれの Java タスクで必要な仮想ストレージの量を削減し、CICS が多数のタスクを同時に実行できるようにします。
CICS タスクは、同じ JVM サーバー・プロセス内のスレッドとして並列で実行されます。 JVM は、複数のアプリケーションを同時に実行している可能性のあるすべての CICS タスクにより共有されます。 すべての静的データおよび静的クラスも共有されます。 このため、CICS で JVM サーバーを使用するには、Java アプリケーションがスレッド・セーフである必要があります。 各スレッドは T8 TCB で実行され、JCICS API を使用して CICS サービスにアクセスできます。
新しいスレッドを開始したり、スレッドを開始するライブラリーを呼び出したりするアプリケーション・コードを作成できます。ただし、これらのスレッドは CICS サービスにアクセスできません。 アプリケーションによって生成されたスレッドから CICS サービスにアクセスしようとすると、Java bm.exception が発生します。 アプリケーションでスレッドを作成する場合は、アプリケーションを実行する CICS タスクの存続期間を超えてスレッドを実行しないようにします。 システム・プログラマーが JVM サーバーを使用不可にする場合、CICS は、T8 TCB で実行中の現行のすべてのスレッドが JVM で終了するまで待ちます。 ただし、アプリケーション自体によって作成されたスレッドは終了されます。
JVM サーバーで実行されるすべてのスレッドによって静的データが共有されるため、静的データを初期化して JVM シャットダウン時に適切な状態にするための OSGi バンドル・アクティベーター・クラスを作成することができます。 JVM サーバーは、例えば、アプリケーションの追加や問題の修正などのために、システム・プログラマーが使用不可にするまで稼働します。バンドル・アクティベーター・クラスを提供することにより、アプリケーションにとって適切な状態を確実に設定できます。 CICS にはタイムアウトがあります。 このタイムアウトは、JVM サーバーの開始または停止を続行するまでにこれらのクラスが完了するのを待機する時間を指定します。 開始クラスと終了クラスで JCICS を使用することはできません。
アプリケーションで System.exit() メソッドを使用しないでください。 このメソッドにより、JVM サーバーと CICS の両方がシャットダウンし、アプリケーションの状態と可用性に影響を与えます。