Os aplicativos intensivos de computação são aplicativos que executam tarefas computacionalmente intensivas que não se adaptam confortavelmente no paradigma de pedido / resposta tradicional do J2EE (Java 2 Platform Enterprise Edition).
O conceito de tarefa é compartilhado por todos os aplicativos de longa execução e é descrito em inúmeros locais. As seguintes seções fornecem informações adicionais sobre as extensões para o modelo de programação de beans assíncronos.
Etapas da Tarefa de Computação Intensiva
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 computação intensiva, cada etapa da 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 WebSphere e do 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 API para obter detalhes adicionais.
Para aprender sobre os beans assíncronos, acesse a seção Utilizando Beans Assíncronos do WebSphere Application Server Infocenter.
Bean do Controlador
<session id="supply a suitable name here"> <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"> <description> O WorkManager será utilizado para executar as 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>
Compactando um Aplicativo de Computação Intensiva
A lógica para um aplicativo de computação intensiva (alguns números de objetos CIWork mais as classes necessárias para suportar esses objetos CIWork) é compactada em um módulo de bean corporativo em um arquivo J2EE EAR (application Enterprise Archive). Observe que o descritor de implementação para o módulo do bean corporativo deve conter a definição do bean de sessão sem preservação de estado mostrado acima. Se o próprio arquivo utilizar outros beans corporativos ou recursos, as definições para esses 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 computação intensiva da mesma maneira como são utilizados para construir aplicativos J2EE contendo módulos de bean corporativo e beans assíncronos.
Ciclo de Vida de um Aplicativo de Computação Intensiva
Se a tarefa for cancelada antes que o método run() seja retornado, o CIControllerBean chamará 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() retornar sem emitir uma exceção, a tarefa será considerada como tendo sido concluída com êxito. Se o método run() emitir uma exceção, a tarefa será marcada como falha na execução. Depois que o método run() for retornado (normalmente ou emitindo uma exceção), nenhuma outra chamada será feita no objeto CIWork e todas as referências serão eliminadas.
Related concepts
Desenvolvendo Aplicativos de Longa Execução