Aplicativos de cálculo intenso são aplicativos que executam trabalho de computação intensiva que não se adaptam confortavelmente ao paradigma de pedido e resposta tradicional do J2EE (Java 2 Platform Enterprise Edition).
As seguintes seções fornecem informações adicionais sobre as extensões para o modelo de programação de beans assíncronos.
<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>
A lógica de um aplicativo de cálculo intenso, um determinado número de objetos CIWork mais as classes necessárias para suportar esses objetos CIWork, são compactados em um módulo de enterprise bean em um arquivo EAR (Enterprise Archive) do aplicativo J2EE. Observe que o descritor de implementação do módulo do enterprise bean deve conter a definição do bean de sessão sem preservação de estado descrito anteriormente. Se o próprio aplicativo utilizar outros enterprise beans ou recursos, as definições desses beans e recursos também poderão aparecer no descritor de implementação. Ferramentas de desenvolvimento J2EE, como o IBM Rational Application Developer, podem ser utilizadas para desenvolver e compactar aplicativos de cálculo intenso da mesma maneira como são utilizados para construir aplicativos J2EE contendo módulos de enterprise beans e beans assíncronos.
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() for retornado (com êxito ou emitindo uma exceção), nenhuma outra chamada será feita para o objeto CIWork e todas as referências serão eliminadas.
Assim como todas as tarefas de longa execução, as tarefas de computação intensiva são divididas em várias etapas de tarefa. No caso das tarefas de cálculo intenso, cada 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 JSR (Java Specification Request) 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 mais detalhes.
Para aprender sobre os beans assíncronos, vá para a seção Utilizando Beans Assíncronos do Centro de Informações do WebSphere Application Server.