CICS®는 Threadsafe Java™ 애플리케이션을 실행하는 데 필요한 JVM 서버 환경을 제공합니다. Threadsafe가 아닌 애플리케이션은 JVM 서버를 사용할 수 없습니다.
JVM 서버는 단일 JVM에서 태스크를 실행할 수 있는 런타임 환경입니다. 이 환경에서는 각 Java 태스크에 필요한 가상 저장 공간이 감소하며 CICS가 많은 태스크를 동시에 실행할 수 있습니다.
CICS 태스크는 동일한 JVM 서버 프로세스의 스레드가 처리될 때 병렬로 실행됩니다. JVM은 여러 애플리케이션을 동시에 실행하는 모든 CICS 태스크에서 공유합니다. 모든 정적 데이터 및 정적 클래스도 공유됩니다. 따라서, CICS에서 JVM 서버를 사용하려면 Java 애플리케이션이 Threadsafe여야 합니다. 각 스레드는 T8 TCB 아래에서 실행되고 JCICS API를 사용하여 CICS 서비스에 액세스할 수 있습니다.
애플리케이션에서 System.exit() 메소드를 사용하지 마십시오. 이 메소드는 JVM 서버 및 CICS를 종료시켜 애플리케이션의 상태 및 가용성에 영향을 미칩니다.
새 스레드를 시작하기 위해 애플리케이션 코드를 작성하거나 스레드를 시작하는 라이브러리를 호출할 수 있습니다. 애플리케이션에서 스레드를 작성하려는 경우 선호하는 메소드는 OSGi 레지스트리에서 일반 ExecutorService를 사용하는 것입니다. ExecutorService는 애플리케이션이 JVM 서버에서 실행 중일 때 자동으로 CICS ExecutorService를 사용하여 CICS 스레드를 작성합니다. 이러한 접근법은 애플리케이션이 다른 환경에 더 쉽게 이식되므로 특정 JCICS API 메소드를 사용할 필요가 없음을 의미합니다.
그러나 CICS에서 특정한 애플리케이션을 작성하는 중이면 JCICS API의 CICSExecutorService 클래스를 사용하여 새 스레드를 요청하도록 선택할 수 있습니다.
어느 메소드를 선택하든 새로 작성된 스레드는 CICS 태스크로 실행되며 CICS 서비스에 액세스할 수 있습니다. JVM 서버를 사용 안할 때 CICS는 JVM에서 실행 중인 모든 CICS 태스크가 완료되기를 기다립니다. CICS는 ExecutorService 또는 CICSExecutorService 클래스를 사용하여 실행 중인 태스크를 인식하므로 JVM 서버가 종료되기 전에 애플리케이션 작업이 완료되도록 할 수 있습니다.
JCICS 오브젝트는 이 오브젝트를 작성한 태스크에서만 사용할 수 있습니다. 태스크 간에 오브젝트를 공유하려는 시도는 예측할 수 없는 결과를 불러올 수 있습니다.
정적 데이터는 JVM 서버에서 실행되는 모든 스레드가 공유하므로 OSGi 번들 활성자 클래스를 작성하여 JVM 종료 시 정적 데이터를 초기화하고 올바른 상태로 유지할 수 있습니다. JVM 서버는 관리자가 JVM 서버의 구성을 변경하거나 문제점을 수정하는 목적 등으로 사용 불가능하게 할 때까지 실행됩니다. 번들 활성자 클래스를 제공하면 애플리케이션에 대해 올바른 상태가 설정되도록 확인할 수 있습니다. CICS에는 JVM 서버를 계속 시작하거나 중지하기 전에 이 클래스가 완료될 때까지 대기하는 시간을 지정하는 제한시간이 있습니다. 시작 및 종료 클래스에는 JCICS를 사용할 수 없습니다.