CICS fournit un environnement de serveur JVM pour l'exécution d'applications Java™ autorisant les unités d'exécution multiples. Les autres applications qui ne sont pas des unités d'exécution multiples ne peuvent pas utiliser le serveur JVM.
Le serveur JVM est un environnement d'exécution pouvant exécuter des tâches dans une machine JVM unique. Cet environnement réduit le volume de stockage virtuel requis pour chaque tâche Java et permet à CICS d'exécuter de nombreuses tâches simultanément.
Les tâches CICS sont exécutées en parallèle en tant qu'unités d'exécution dans le même processus serveur JVM. La machine JVM est partagée par toutes les tâches CICS qui peuvent exécuter simultanément plusieurs applications, Toutes les données et les classes statiques sont également partagées. Par conséquent, pour utiliser un serveur JVM dans CICS, une application Java doit autoriser les unités d'exécution multiples. Chaque unité d'exécution s'exécute sous un bloc de contrôle de tâches T8 et peut accéder aux services CICS à l'aide de l'API JCICS.
Il est déconseillé d'utiliser la méthode System.exit() dans vos applications. Cette dernière entraîne l'arrêt du serveur JVM et CICS, ce qui modifie l'état et la disponibilité de vos applications.
Vous pouvez consigner le code de l'application pour démarrer une nouvelle unité d'exécution ou appeler une bibliothèque qui démarre une unité d'exécution. Si vous voulez créer des unités d'exécution dans votre application, la méthode préférée consiste à utiliser un ExecutorService générique à partir du registre OSGi. L'ExecutorService utilise automatiquement l'ExecutorService CICS pour créer des unités d'exécution CICS lorsque l'application s'exécute dans un serveur JVM. Cette approche signifie que l'application est plus facile à connecter et que vous n'avez pas besoin d'utiliser des méthodes API JCICS spécifiques.
Cependant, si vous écrivez une application qui est spécifique à CICS, vous pouvez choisir d'utiliser une classe CICSExecutorService dans l'API JCICS pour demander de nouvelles unités d'exécution.
Quelle que soit la méthode que vous utilisez, les unités d'exécution nouvellement créées fonctionnent en tant que tâches CICS et peuvent accéder aux services CICS. Lorsque le serveur JVM est désactivé, CICS attend que toutes les tâches CICS qui s'exécutent dans le JVM se terminent. En utilisant la classe ExecutorService ou CICSExecutorService, CICS connaît les tâches qui s'exécutent et vous pouvez veiller à ce que le travail de l'application se termine avant que le serveur JVM ne s'arrête.
Vous pouvez utiliser les objets JCICS uniquement dans la tâche qui les a créés. N'importe quelle tentative pour partager les objets entre les tâches peut produire des résultats imprévisibles.
Etant donné que les données statiques sont partagées par toutes les unités d'exécution qui s'exécutent dans le serveur JVM, vous pouvez créer des classes pour l'activateur de regroupement OSGi afin d'initialiser les données statistiques et les laisser à l'état approprié lorsque JVM s'arrête. Un serveur JVM s'exécute jusqu'à ce qu'il soit désactivé par un administrateur, par exemple pour changer la configuration de JVM ou pour régler un problème. En fournissant des classes à l'activateur de regroupement, vous pouvez être certain que le statut est correctement défini pour vos applications. CICS dispose d'un délai d'attente indiquant le délai imparti pour l'exécution des classes avant de continuer le démarrage ou l'arrêt du serveur JVM. Vous ne pouvez pas utiliser JCICS dans les classes de démarrage et d'arrêt.