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

Há uma série de características que podem tornar esses aplicativos inadequados para modelos de programação tradicionais do Java EE:
  • 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 fornece um ambiente que trata 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 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

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

Um aplicativo de cálculo intenso é iniciado pelo servidor de aplicativos da mesma maneira que outros aplicativos Java EE. 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 chama o bean de sessão stateless CIControllerBean definido no descritor de implementação do módulo EJB do aplicativo. O nome Java Naming and Directory Interface (JNDI) desse bean de sessão stateless é especificado no XML Job Control Language (xJCL) para a tarefa. Para cada etapa da tarefa, o bean de sessão stateless CIControllerBean conclui as seguintes ações:
  1. 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.
  2. Chama o método setProperties() do objeto CIWork para passar quaisquer propriedades definidas no xJCL para a etapa de tarefa.
  3. 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.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cgrid_schintensve
Nome do arquivo: cgrid_schintensve.html