Modelo de Programação de Cálculo Intenso
Aplicativos de cálculo intenso são aplicativos que executam trabalho de computação intensiva que não se adaptam confortavelmente ao paradigma tradicional de pedido e resposta do Java™ Platform, Enterprise Edition (Java EE).
Aplicativos de Cálculo Intenso
- A necessidade de envio assíncrono e início do trabalho
- A necessidade de que o trabalho seja executado por longos períodos de tempo
- A necessidade de que unidades de trabalho individuais sejam visíveis e gerenciáveis por operadores e administradores
- O uso de tarefas para enviar e gerenciar trabalho de forma assíncrona
- Uma extensão secundária para o modelo de programação de beans assíncronos para suportar o trabalho executado por um longo período de tempo
As seções a seguir fornecem informações adicionais sobre as extensões para o modelo de programação de beans assíncrono.
Bean do Controlador
<session id="forneça um nome adequado aqui">
<ejb-name>CIController</ejb-name>
<home>com.ibm.ws.ci.CIControllerHome</home>
<remote>com.ibm.ws.ci.CIController</remote>
<ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
<resource-ref id="WorkManager_ResourceRef">
<descrição>
WorkManager utilizado para executar tarefas.
<res-ref-name>wm/CIWorkManager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
Empacotando um Aplicativo de Cálculo Intenso
A lógica para um aplicativo de cálculo intenso com algum número de objetos CIWork, mais as classes para suportar esses objetos CIWork, é empacotada em um módulo de bean corporativo em um arquivo Enterprise Archive (EAR) do aplicativo Java EE. O descritor de implementação para o módulo de enterprise bean deve conter a definição do bean de sessão stateless descrito anteriormente. Se o próprio aplicativo usar outros enterprise beans ou recursos, as definições para esses beans e recursos também poderão estar no descritor de implementação. É possível usar as ferramentas de desenvolvimento do Java EE, como IBM® Rational Application Developer para desenvolver e empacotar aplicativos de cálculo intenso da mesma maneira que eles são usados para construir aplicativos Java EE que contêm módulos de bean corporativo e beans assíncronos. Também é possível usar a tarefa pgcpackager para empacotar aplicativos de cálculo intenso.
Ciclo de Vida de um Aplicativo de Cálculo Intenso
- Instancia o objeto CIWork do aplicativo especificado pelo elemento de nome da classe no xJCL para a etapa de tarefa usando o construtor sem argumento da classe CIWork.
- Chama o método setProperties() do objeto CIWork para passar quaisquer propriedades definidas no xJCL para a etapa de tarefa.
- Consulta o gerenciador de trabalho definido no descritor de implementação do módulo de enterprise bean e o usa para chamar de forma assíncrona o método run() do objeto CIWork.
Se a tarefa for cancelada antes do retorno do método run(), o CIControllerBean invocará o método release() do objeto CIWork em um encadeamento separado. Depende do desenvolvedor do aplicativo de longa execução organizar a lógica no método release() para fazer com que o método run() seja retornado corretamente. A tarefa permanecerá em um estado de cancelamento pendente até que o método run() seja retornado.
Se a tarefa não for cancelada e o método run() for retornado sem retornar uma exceção, a tarefa foi concluída com êxito. Se o método run() retornar uma exceção, o status da tarefa será falha na execução. Depois que o método run() é retornado com êxito ou com uma exceção, nenhuma chamada adicional é feita no objeto CIWork. Todas as referências para o método run() serão descartadas.
Etapa da Tarefa de Cálculo Intenso
Diferentemente de outras tarefas em lote, tarefas de cálculo intenso consistem em uma etapa de tarefa. Essa etapa de tarefa é representada por uma instância de uma classe que implementa a interface com.ibm.websphere.ci.CIWork. A interface CIWork estende a interface de trabalho commonj.Work do modelo de programação de beans assíncronos do servidor de aplicativos e do Java Specification Request (JSR) 237. Essas extensões consistem em dois métodos que fornecem uma maneira de transmitir as propriedades específicas de etapa da tarefa especificada na tarefa para o objeto CIWork.
Consulte a documentação da API para obter detalhes adicionais.
Para saber mais sobre beans assíncronos, consulte Usando beans assíncronos.