Dans un environnement de serveur JVM, une application qui s'exécute dans une infrastructure OSGi peut utiliser ExecutorService pour créer des unités d'exécution qui s'exécutent sur les tâches CICS de façon asynchrone.
CICS fournit une mise en oeuvre de l'interface Java™ ExecutorService. La mise en oeuvre crée des unités d'exécution qui peuvent utiliser l'API JCICS pour accéder aux services CICS. Le serveur JVM enregistre le CICS ExecutorService en tant que service OSGi au démarrage. Utilisez ce service au lieu de la classe Java Thread pour créer des tâches qui peuvent utiliser JCICS.
L'ExecutorService qui est fourni par CICS est inscrit avec une haute priorité dans l'infrastructure OSGi, afin qu'il puisse être utilisé par des applications pour créer des unités d'exécution. Généralement, une application utilise une haute priorité ExecutorService, à moins qu'elle ne filtre les services pour utiliser une mise en oeuvre spécifique.
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. Le registre OSGi utilise automatiquement CICS ExecutorService pour créer des unités d'exécution CICS lorsque l'application s'exécute dans un serveur JVM. Cette approche que l'application est découplée de la mise en oeuvre, de sorte que vous n'avez pas besoin d'utiliser la méthode API JCICS pour créer des unités d'exécution.
Toutefois, 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.
Cette classe met en oeuvre l'interface java.util.concurrent.ExecutorService. La classe CICSExecutorService fournit une méthode statique appelée runAsCICS() que vous pouvez utiliser pour soumettre un objet Java exécutable Java pour l'exécuter sur une nouvelle unité d'exécution activée JCICS. La méthode runAsCICS() est une méthode utilitaire qui effectue la recherche dans le registre OSGi afin d'obtenir une instance d'un CICSExecutorService pour l'application.
Etant donné que cette classe est inscrite en tant qu'une mise en oeuvre de l'interface Java Java ExecutorService, n'importe quelle application qui demande un ExecutorService ne reçoit que CICSExecutorService lorsqu'elle est exécutée dans un serveur JVM.
CICSExecutorService.runAsCICS(Runnable runnable)
Vous devez utiliser la méthode execute() pour créer des unités d'exécution qui peuvent utiliser JCICS. Si vous utilisez la méthode submit(), l'application obtient une unité d'exécution Java qui ne peut pas exécuter JCICS.
Pour les applications qui ne fonctionnent pas dans une infrastructure OSGi, par exemple un programme Axis2 Java, vous pouvez accéder à JCICS uniquement sur l'unité d'exécution de l'application initiale puisque ExecutorService n'est pas disponible. Vous devez aussi vous assurer que toutes les unités d'exécution autres que l'unité d'exécution initiale se sont arrêtées avant d'exécuter l'une des actions suivantes :