Em um ambiente do servidor JVM, um aplicativo que está em execução em uma estrutura OSGi, pode usar um ExecutorService para criar encadeamentos executados em tarefas do CICS de maneira assíncrona.
O CICS fornece uma implementação da interface ExecutorService Java™. Essa implementação cria encadeamentos que podem usar a API JCICS para acessar serviços CICS. O servidor JVM registra o ExecutorService do CICS como um serviço OSGi na inicialização. Use esse serviço, em vez da classe Thread Java para criar tarefas que podem usar o JCICS.
O ExecutorService, fornecido pelo CICS, é registrado como alta prioridade na estrutura OSGi, para que possa ser usado pelos aplicativos para criar encadeamentos. Normalmente, um aplicativo usa a prioridade mais alta do ExecutorService, a menos que ele filtre serviços para usar uma implementação específica.
Se você deseja criar encadeamentos em seu aplicativo, o método preferido é usar um ExecutorService genérico a partir do registro OSGi. O registro OSGi usa automaticamente o ExecutorService CICS para criar encadeamentos do CICS quando o aplicativo estiver em execução em um servidor JVM. Esta abordagem significa que o aplicativo está desacoplado da implementação, assim não é necessário usar o método da API JCICS para criar encadeamentos.
No entanto, se você estiver gravando um aplicativo que seja específico para o CICS, poderá escolher usar uma classe CICSExecutorService na API JCICS para solicitar novos encadeamentos.
Esta classe implementa a interface java.util.concurrent.ExecutorService. A classe CICSExecutorService fornece um método estático chamado runAsCICS() que pode ser usado para enviar um objeto Runnable Java para ser executado em um novo encadeamento ativado do JCICS. O método runAsCICS() é um método utilitário que executa a consulta do registro OSGi para obter uma instância de um CICSExecutorService para o aplicativo.
Como essa classe é registrada como uma implementação da interface ExecutorService Java, qualquer aplicativo que solicita um ExecutorService receberá o CICSExecutorService quando ele for executado em um servidor JVM.
CICSExecutorService.runAsCICS(Runnable runnable)
É preciso usar o método executar() para criar encadeamentos que podem usar o JCICS. Se você usar o método submit(), o aplicativo obterá um encadeamento Java que não poderá executar o JCICS.
Para aplicativos que não estão em execução em uma estrutura OSGi, por exemplo, um programa Axis2 Java, é possível acessar o JCICS apenas no encadeamento inicial de aplicativos, pois o ExecutorService não está disponível. Além disso, é preciso garantir que todos os encadeamentos diferentes do inicial sejam concluídos antes de tomar alguma das ações a seguir: