CICS® は、スレッド・セーフ Java™ アプリケーションを実行するための JVM サーバー環境を提供します。 スレッド・セーフではないアプリケーションは、JVM サーバーを利用することはできません。
JVM サーバーは、単一の JVM でタスクを実行できるランタイム環境です。 この環境はそれぞれの Java タスクで必要な仮想ストレージの量を削減し、CICS が多数のタスクを同時に実行できるようにします。
CICS タスクは、同じ JVM サーバー・プロセス内のスレッドとして並列で実行されます。 JVM は、複数のアプリケーションを同時に実行している可能性のあるすべての CICS タスクにより共用されます。 すべての静的データおよび静的クラスも共用されます。 このため、CICS で JVM サーバーを使用するには、Java アプリケーションがスレッド・セーフである必要があります。 各スレッドは T8 TCB で実行され、JCICS API を使用して CICS サービスにアクセスできます。
アプリケーションで System.exit() メソッドを使用しないでください。 このメソッドにより、JVM サーバーと CICS の両方がシャットダウンし、アプリケーションの状態と可用性に影響を与えます。
新しいスレッドを開始したり、スレッドを開始するライブラリーを呼び出したりするアプリケーション・コードを作成できます。アプリケーションにスレッドを作成する場合、OSGi レジストリーから汎用 ExecutorService を使用する方式が推奨されています。 アプリケーションが JVM サーバーで実行されているとき、ExecutorService は自動的に CICS ExecutorService を使用して CICS スレッドを作成します。 この方式により、アプリケーションを他の環境に移植することが容易になり、特定の JCICS API メソッドを使用する必要がなくなります。
しかし、CICS に固有のアプリケーションを作成している場合は、JCICS API 内の CICSExecutorService クラスを使用して、新しいスレッドを要求することができます。
いずれの方式を選択した場合でも、新規作成されたスレッドは CICS タスクとして実行され、CICS サービスにアクセスできます。 JVM サーバーが使用不可にされると、CICS は、JVM で実行中の CICS タスクすべてが終了するまで待機します。 ExecutorService クラスまたは CICSExecutorService クラスを使用することにより CICS は実行中のタスクを認識するので、アプリケーションの作業完了後に JVM サーバーをシャットダウンさせることが可能になります。
JCICS オブジェクトは、それらを作成したタスクでのみ使用できます。 それらのオブジェクトをタスク間で共用しようとすると、予測不能な結果をもたらす可能性があります。
静的データは JVM サーバーで実行されるすべてのスレッドによって共用されるため、静的データを初期化して JVM シャットダウン時に適切な状態にするための OSGi バンドル・アクティベーター・クラスを作成することができます。JVM サーバーは、(例えば、JVM の構成を変更するため、または問題を修正するために) 管理者によって使用不可にされるまで稼働します。バンドル・アクティベーター・クラスを提供することにより、アプリケーションにとって適切な状態を確実に設定できます。 CICS にはタイムアウトがあります。 このタイムアウトは、JVM サーバーの開始または停止を続行するまでにこれらのクラスが完了するのを待機する時間を指定します。 開始クラスと終了クラスで JCICS を使用することはできません。