WebSphere Extended Deployment, Version 6.0.x     Sistemas Operacionais: AIX,, HP-UX, Linux, Solaris , Windows , z/OS

Modelo de Programação de Computação Intensiva

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).

Existem inúmeras características que podem tornar esses aplicativos não adequados para os tradicionais modelos de programação J2EE:
O modelo de programação de computação intensiva fornecido pelo WebSphere Extended Deployment fornece um ambiente que cuida dessas necessidades. O modelo de programação de computação intensiva é centralizado em torno de dois conceitos básicos:
  1. O uso de tarefas para submeter e gerenciar os trabalho de forma assíncrona.
  2. Uma extensão menor para o modelo de programação de beans assíncronos para suportar o trabalho que é executado por um longo período de tempo.

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

O bean do controlador é um bean de sessão sem preservação de estado definido no descritor de implementação do aplicativo de computação intensiva que permite que o ambiente de execução controle as tarefas para o aplicativo. A implementação desse bean de sessão sem preservação de estado é fornecida pelo WebSphere. A única responsabilidade do aplicativo é incluir o bean de sessão sem preservação de estado, mostrado na seguinte definição, no descritor de implementação de um de seus módulos de bean corporativo. Observe que deve ser definido exatamente um bean do controlador para cada aplicativo de computação intensiva. Como a implementação do bean do controlador é fornecida no tempo de execução do WebSphere, os implementadores de aplicativos não devem solicitar a implementação dos beans corporativos durante a implementação de aplicativos de computação intensiva.
<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

Um aplicativo de computação intensiva é iniciado pelo servidor de aplicativos exatamente da mesma maneira que outros aplicativos J2EE. Se o aplicativo definir qualquer beans de inicialização, eles serão executados quando o servidor de aplicativos for iniciado. Quando uma tarefa chegar ao aplicativo, o ambiente de execução de computação intensiva (LREE.ear) chama o bean de sessão sem preservação de estado CIControllerBean definido no descritor de implementação do módulo EJB do aplicativo. O nome de JNDI desse bean de sessão sem preservação de estado é especificado no xJCL para a tarefa. Cada cada etapa da tarefa, o CIControllerBean:
  1. Instancia o objeto CIWork do aplicativo especificado pelo elemento do nome de classe no xJCL para a etapa da tarefa utilizando o construtor sem argumento de classe CIWork.
  2. Chama o método setProperties() do objeto CIWork para transmitir quaisquer propriedades definidas no xJCL para a etapa da tarefa.
  3. Consulta o gerenciador de trabalho definido do descritor de implementação do módulo de bean corporativo e utiliza isso para chamar de forma assíncrona o método run() do objeto CIWork.

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

Tópico de Conceito    

Termos de Uso | Feedback Última atualização: Mar 21, 2006 12:48:50 PM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM 2005, 2006. Todos os Direitos Reservados.
Este centro de informações é desenvolvido em tecnologia Eclipse. (http://www.eclipse.org)