WebSphere Extended Deployment Compute Grid, Version 6.1.1
             Sistemas Operacionais: AIX,, HP-UX, Linux, Solaris, Windows ,


O 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 de pedido e resposta tradicional do J2EE (Java 2 Platform Enterprise Edition).

Aplicativos de Cálculo Intenso

Existem inúmeras características que podem tornar esses aplicativos não adequados para os tradicionais modelos de programação J2EE:
  • 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 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 enviar e gerenciar trabalho de forma assíncrona
  2. Uma extensão secundária para o modelo de programação de beans assíncronos para suportar trabalho executado por um longo período de tempo

As seguintes seções fornecem informações adicionais sobre as extensões para o modelo de programação de beans assíncronos.

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 cálculo intenso que permite que o ambiente de tempo de execução controle as tarefas do aplicativo. A implementação desse bean de sessão sem preservação de estado é fornecida pelo servidor de aplicativos. O aplicativo inclui o bean de sessão sem preservação de estado, mostrado na definição a seguir, no descritor de implementação de um de seus módulos de enterprise bean. É necessário definir exatamente um bean do controlador para cada aplicativo de cálculo intenso. Como a implementação do bean do controlador é fornecida no tempo de execução do servidor de aplicativos, os implementadores de aplicativos não solicitam a implementação de enterprise beans durante a implementação de aplicativos de cálculo intenso.
<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 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.

Ciclo de Vida de um Aplicativo de Cálculo Intenso

Um aplicativo de cálculo intenso é iniciado pelo servidor de aplicativos exatamente da mesma maneira que outros aplicativos J2EE. Se o aplicativo definir qualquer bean de inicialização, ele será executado quando o servidor de aplicativos for iniciado. Quando uma tarefa chega para ser executada pelo aplicativo, o ambiente de execução de cálculo intenso (GEE.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 (Java Naming and Directory Interface) desse bean de sessão sem preservação de estado é especificado no xJCL (XML Job Control Language) da tarefa. Cada cada etapa da tarefa, o CIControllerBean conclui as seguintes ações:
  1. Instancia o objeto CIWork do aplicativo especificado pelo elemento de nome de classe no xJCL da etapa da tarefa utilizando o construtor sem argumento da classe CIWork.
  2. Chama o método setProperties() do objeto CIWork para transmitir as propriedades definidas no xJCL da etapa da tarefa.
  3. Consulta o gerenciador de trabalho definido do descritor de implementação do módulo de enterprise bean e o utiliza 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() 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.

Etapas da Tarefa de Cálculo Intenso

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.




Conceitos relacionados
O Modelo de Programação em Lote
Tarefas relacionadas
Os Modelos de Programação do Compute Grid
Tópico de Conceito    

Termos de Uso | Feedback

Última atualização: 24/09/2009 14h24min35s EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/cschintensve.html