Este tópico descreve como gravar um aplicativo em batch simples.
Antes de começar
Antes de iniciar esta tarefa, é necessário configurar seu ambiente.
Por que e quando realizar esta tarefa
Esta tarefa de amostra assume que o usuário esteja utilizando o RAD (Rational Application
Developer). Outras ferramentas de desenvolvimento também podem ser utilizadas.
- Crie um novo projeto do aplicativo corporativo chamado PostingsSample2.
- Inclua um novo módulo de projeto EJB (Enterprise JavaBeans). Isto
cria um novo arquivo EAR e projeto EJB.
- Inclua BATCH_RUNTIME no Caminho de Construção Java
para o projeto PostingsSample2EJB.
- Suponha que já exista uma classe Java, AccountOp,
um objeto Java que tenha dois métodos de interface pública, creditAccount(..) e debitAccount(..).
Estes métodos são chamados a partir do bean em batch conforme apropriado. Importe esta classe
do espaço de trabalho ou grave uma classe de chamada em batch.
- Crie a classe BatchStep. O bean em batch é um bean de entidade
herdado de uma classe abstrata de Etapa em Batch. Faça o seguinte para criar
a etapa da tarefa abstrata PostingSample2Step:
- No projeto PostingsSample2EJB, crie uma classe Java abstrata PostingSample2Step
que seja herdada de BatchJobStepInterface.
- Inclua o BatchJobStepInterface.
- Torne a classe abstrata.
- Crie o Bean em Batch (EJB de Entidade). Estas etapas descrevem
como criar o bean em batch manualmente. O Bean em Batch reutiliza as classes BatchJobStepLocalInterface,
BatchJobStepKey e BatchJobStepLocalHome a partir do modelo de programação fornecido;
estas classes não são recriadas. Apenas a implementação do Bean em Batch
é gerada.
- No projeto PostingSample2EJB, crie um novo EJB CMP chamado PostingsSample2Data.
- Para a classe de interface home local, selecione BatchJobStepLocalHomeInterface.
- Para a classe de interface local, selecione BatchJobStepLocalInterface.
- Cancele a seleção de Utilizar um Tipo de Atributo de Chave Único para a Classe de Chave.
- Para a classe de chave, selecione BatchJobStepKey.
- Remova o ID do atributo CMP.
- No atributo CMP, inclua os dois atributos CMP, jobID e stepID
de cadeia de tipos.
- Inclua jobID como o nome e java.lang.String
como o tipo. Selecione Chave.
- De forma semelhante, inclua stepID, digite java.lang.String e
torne-o o campo Chave.
- Selecione BeanSuperclass. Crie um tipo de correspondência de PostingStep2.
Isto cria o novo EJB, mas apenas a classe do Bean EJB é exibida
nos projetos. A interface local, interface home e classe de chave são coletadas
das classes fornecidas pelo modelo de programação.
- Editando o descritor de implementação. Faça as seguintes alterações
no ejb-jar.xml para PostingSample2Data.
- Na guia Bean, edite o nome JNDI da connection factory CMP para jdbc/lree
e o tipo de Autorização do Contêiner para Per_Connection_Factory.
- Na guia Montagem, para as transações de contêiner, torne todos os métodos
(*), do PostingsSample2Data, se Necessário.
- Edite o nome JNDI em ligações do WebSphere para ejb/com/ibm/ws/batch/sample/PostingsSample2Data.
- Salve e feche o descritor de implementação. Como anteriormente, inclua
a implementação para o EJB posteriormente.
- Criar o Bean de Sessão de Tarefa do Batch A Tarefa do batch é um bean de sessão
declarado no descritor de implementação, mas não possui classes geradas, porque
faz parte do tempo de execução.
- No ejb-jar xml, na guia Bean, clique
em Incluir para criar um novo EJB de Sessão, nomeie-o PostingsJob2.
- Altere o tipo de Transação para Bean.
- Na classe do Bean, na interface home remota e na interface remota,
digite as seguintes cadeias:
- Classe do bean: com.ibm.ws.batch.BatchJobControllerBean
- Interface remota: com.ibm.ws.batch.BatchJobController
- Interface home remota: com.ibm.ws.batch.BatchJobControllerHome
Observe que não é gerada nenhuma classe nova; isto porque
todas as classes existem no tempo de execução. Estamos apenas declarando o bean de Sessão da Tarefa no descritor de implementação.
- Edite o nome JNDI de Ligações do WebSphere para: ejb/com/ibm/ws/batch/PostingsSample2Job
- Inclua uma referência no PostingsSample2Job de tipo referência de EJB.
- Selecione o Bean PostingsSample2Data e inclua o nome: ejb/PostingsSample2Data
Selecione o tipo de referência local.
- Crie a referência do Gerenciador de trabalho.
- Na guia Referências, no bean PostingSample2Job, clique em Incluir.
Selecione Referência de Recurso e clique em Avançar.
- Nome: wm/BatchWorkManager
- Tipo: Selecione commonj.work.WorkManager
- Autenticação: Contêiner
- Escopo de Compartilhamento: Compartilhável
- Edite o nome JNDI (Java Naming and Directory Interface)
do wm/BatchWorkManger para wm/default.
- Salve e feche o ejb-jar.xml.
- Criando o Fluxo de Dados de Batch de Entrada Pode haver zero,
1 ou n fluxos de entrada e/ou saída. Neste exemplo, existe um InputStream
lendo a partir de um arquivo e nenhum fluxo de saída. A saída é gravada no console.
As classes BDS são POJO. Para criar o fluxo de entrada, faça o seguinte:
- Crie uma nova classe no pacote com.ibm.ws.batch.sample, chamada
PostingsSample2InputStream.
- Implemente a Interface BatchDataStream. Isto cria
a nova classe de Fluxo PostingSample2Input. É possível incluir as implementações
posteriormente.
- Crie a Classe Posting2 para representar um registro do Fluxo de Entrada.
Esta classe é a representação do objeto de um registro no Fluxo de Saída de
Batch. Ela é construída durante a leitura de um registro a partir do BDS de Entrada e transmitida para o Bean de Batch. Esta classe é semelhante a um bean de dados ou de carregamento que contém
atributos e getters e setters correspondentes dos campos no Fluxo de Entrada.
- Crie uma nova classe denominada Posting2 que implementa a interface
Serializável. As implementações podem ser incluídas nela posteriormente.
- Incluir Implementações nas Classes
- Agora inclua implementações em PostingSample2DataBean, PostingSample2Step
e PostingSample2InputStream como nos arquivos de classe anexados. Este exemplo é mantido simples de um ponto de vista de processamento para realçar as etapas envolvidas
no desenvolvimento de um novo aplicativo em batch. Quando as classes de implementação forem incluídas, será possível implementar o EJB.
O que fazer depois
Na árvore de navegação do console administrativo, expanda Operações
de Tempo de Execução e selecione Gerenciamento de Tarefas. Verifique se no painel à direita
existe uma tabela de tarefas vazia sem mensagens de erro.