CICS 中的 Java 运行时环境

CICS® 提供用于运行线程安全型 Java™ 应用程序的 JVM 服务器环境。非线程安全型的应用程序不能使用 JVM 服务器。

JVM 服务器是可以在单个 JVM 中运行任务的运行时环境。此环境减少了每个 Java 任务所需的虚拟存储量,并允许 CICS 并行运行多个任务。

CICS 任务作为同一个 JVM 服务器进程中的线程并行运行。所有 CICS 任务(可能同时运行多个应用程序)共享 JVM。还会共享所有静态数据和静态类。因此,要在 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 任务完成。通过使用 ExecutorServiceCICSExecutorService 类,CICS 可识别正运行的任务,并且可确保应用程序工作在 JVM 服务器关闭前完成。

您只能在创建 JCICS 对象的任务中使用这些对象。任何在任务间共享这些对象的尝试都可能产生不可预测的结果。

JVM 服务器启动和关闭

由于 JVM 服务器中正运行的所有线程都会共享静态数据,因此您可以创建 OSGi 束激活器类以初始化静态数据,并在 JVM 关闭时使该数据处于正确的状态。JVM 服务器会一直运行,直至管理员因某种原因将其禁用:例如,更改 JVM 的配置或纠正问题。通过提供束激活程序类,您可以确保为应用程序正确地设置了状态。CICS 具有超时设置,可以指定在继续启动或停止 JVM 服务器之前要等待多长时间以使这些类完成。请勿在启动和终止类中使用 JCICS。