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


Construindo um Aplicativo em Lote Utilizando POJO

Este tópico descreve as etapas necessárias para construir e compactar um aplicativo em lote utilizando o modelo de programação POJO (Plain Old Java Object).

Antes de Começar

A construção de um aplicativo em lote baseado em POJO é o método preferido para se construir um aplicativo em lote. Consulte O Modelo de Programação em Lote e Modelo de Programação POJO para obter informações adicionais.

Como opção, você pode utilizar os seguintes scripts para substituir as etapas de 3 a 5 localizadas na seção Procedimento a seguir:

Configure a Java virtual machine customizada propertycom.ibm.websphere.ejbcontainer.expandCMPCFJNDIName. Consulte Propriedades customizadas da Java virtual machine .

WSBatchPackager.sh
                 -properties=<nome do arquivo de propriedades>
                 [-debug]

ou

WSBatchPackager.sh
-appname=<nome do aplicativo>
		-jobsteps="{{<nome do ejb>, <nome da jndi>, <classe de etapa POJO> [, arquivo jar, jars do utilitário]}, ...}"
-jarfile=<arquivo jar contendo classes de etapas POJO>
-earfile=<nome do arquivo ear de saída>
[-utilityjars=<jars do utilitário separados por ponto-e-vírgula>]
[-epjndiname=<nome do jndi da origem de dados do terminal/ponto de verificação>]
   [-nonxadsjndiname=<Nome da JNDI da origem de dados não-xa do CursorHoldableJDBCReader>;<nome da JNDI 2 da origem de dados não-XA>;...]
[-depuração]

Alternativamente, o empacotador pode ser chamado conforme mostrado abaixo:

  java -jar batchpackager.jar 
                 -properties=<nome do arquivo de propriedades>
                 [-debug]

ou

  java -jar batchpackager.jar
                 -appname=<nome do aplicativo>
                 -jobsteps="{{<nome do ejb>, <nome da jndi>, <classe de etapa POJO> [, arquivo jar, jars do utilitário]}, ...}"
                 -jarfile=<arquivo jar contendo classes de etapas POJO>
                 -earfile=<nome do arquivo ear de saída>
                 [-utilityjars=<jars do utilitário separados por ponto-e-vírgula>]
                 [-epjndiname=<nome do jndi da origem de dados do terminal/ponto de verificação>]
                 [-nonxadsjndiname=<nome da JNDI da origem de dados não-xa do CursorHoldableJDBCReader>;<nome da JNDI 2 da origem de dados não-XA>;...]
                 [-debug]

Procedimento

  1. Crie etapas de tarefas em lote. Crie uma nova classe Java que implemente a interface com.ibm.websphere.BatchJobStepInterface. Implemente a lógica de negócios.

    Se a etapa tiver exatamente um fluxo de entrada e um fluxo de saída, com alternativa, você poderá usar o Etapa em Lote Genérico (GenericXDBatchStep) .

  2. Crie fluxos de dados em lote. Crie uma nova classe Java que implemente a interface com.ibm.websphere.batch.BatchDataStream. Os fluxos de dados em lote são acessados a partir da lógica de negócios (isto é, das etapas de tarefas em lote) chamando-se BatchDataStreamMgr com jobID e stepID. JobID e stepID são recuperados da lista de propriedades de beans da etapa utilizando-se as chaves BatchConstants.JOB_ID e BatchConstants.STEP_ID. Mapeie o BatchConstants.JOB_ID para com.ibm.websphere.batch.JobID e mapeie BatchConstants.STEP_ID para com.ibm.websphere.batch.StepID. Você já deverá ter acesso à classe BatchConstants.
    A estrutura de fluxo de dados em lote fornece vários padrões prontos para uso para trabalhar com diferentes tipos de fluxos de dados. Por exemplo, arquivo, banco de dados, etc. Para usar a estrutura de fluxo de dados em lote:
    • Identifique o tipo de fluxo de dados com o qual deseja operar (fluxo TextFile, ByteFile, JDBC, z/OS),
    • Identifique se estará lendo ou gravando dados de/para esse fluxo.
    • Consulte a tabela no Padrões e Estrutura de Fluxo de Dados em Lote e selecione a classe a partir da coluna das classes de suporte que corresponde ao tipo e operação de fluxo de dados. Por exemplo, se você desejar ler dados de uma arquivo de texto, deverá escolher TextFileReader.
    • Implemente a interface listada na coluna de nome padrão que corresponde à classe de suporte selecionada na etapa anterior. A classe de suporte trata todas as atividades de contabilidade relacionadas ao fluxo e ao modelo de programação em lote, permitindo que a classe de implementação se focalize na lógica de processamento de fluxo.
    • Declare a classe de suporte e a classe de implementação no xJCL.
    • Repita esse procedimento para cada fluxo de dados necessário na etapa.
    		<batch-data-streams>
       <bds>
    <logical-name>inputStream</logical-name>
     	<props>
     <prop name="PATTERN_IMPL_CLASS" value="MyBDSStreamImplementationClass"/>
                <prop name="file.encoding" value="8859_1"/>
                <prop name="FILENAME" value="${inputDataStream}" />
                <prop name="PROCESS_HEADER" value="true"/>
                <prop name="AppendJobIdToFileName" value="true"/>
            </props>
    	<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.FileByteReader</impl-class>
       </bds>
    Nota: O PATTERN_IMPL_CLASS denota a implementação do usuário do padrão de estrutura de BDS e a propriedade impl-class denota a classe de suporte.
  3. Declare um controlador de tarefa do lote.
    1. Inclua um bean de sessão stateless em seu descritor de implementação e aponte para a classe de implementação fornecida pelo WebSphere Extended Deployment através da especificação de com.ibm.ws.batch.BatchJobControllerBean como a classe do bean. Faça isso só uma vez por aplicativo em lote.
    2. Utilize com.ibm.ws.batch.BatchJobControllerHome para a classe de interface inicial remota e com.ibm.ws.batch.BatchJobController para a classe de interface remota.
  4. Declare o wrapper da etapa de tarefa em lote das etapas em lote do POJO.
    1. Inclua um bean de entidade CMP como um wrapper para a etapa em lote no descritor de implementação e aponte para a classe de implementação fornecida pelo WebSphere XD especificando com.ibm.ws.batch.DefaultBatchJobStepBean como a classe de bean. Faça isso uma vez por etapa em lote distinta no aplicativo.
    2. Utilize com.ibm.ws.batch.BatchJobStepLocalHomeInterface para a classe de interface inicial local e com.ibm.ws.batch.BatchJobStepLocalInterface para a classe de interface local.
    3. Especifique com.ibm.websphere.batch.BatchJobStepKey para a classe de chaves e inclua dois atributos CMP jobID e stepID do tipo java.lang.String
    4. Defina uma entrada de ambiente no descritor de implementação EJB para associar a implementação da etapa em lote do POJO ao wrapper. Especifique POJOclass para o nome da entrada do ambiente e o nome de classe da etapa de tarefa em lote do POJO para o valor da entrada do ambiente. Utilize java.lang.String para o tipo de entrada do ambiente.
  5. Configure o descritor de implementação EJB.
    1. Referência de Recurso EJB: Inclua uma referência para cada etapa em lote no bean do Controlador de Tarefas em Lote.
    2. WorkManager: Configure uma referência de recurso no bean do Controlador no WorkManager wm/BatchWorkManager padrão do tipo commonj.work.WorkManager.
    3. Cache: Para os wrappers de Etapa de Tarefa, configure o cache do bean como Ativar IMEDIATAMENTE e Carregar na ATIVAÇÃO.
    4. Transações: Para garantir que as etapas de tarefas sejam executadas no escopo de uma transação global, configure o atributo transaction como NECESSÁRIO.

Exemplo

appname=testBatchApp
jarfile=c:\\websphere\\appserver\\temp\\pojoclasses.jar
earfile=TestBatchAppEAR

ejbname.1=POJOStep1
jndiname.1=ejb/POJOStep1
jobstepclass.1=com.ibm.ws.batch.sample.POJOStep1.class

ejbname.2=POJOStep2
jndiname.2=ejb/POJOStep2
jobstepclass.2=com.ibm.ws.batch.sample.POJOStep2.class



Conceitos relacionados
Modelo de Programação POJO
Tarefas relacionadas
Desenvolvendo um Aplicativo em Batch Simples
Informações relacionadas
Propriedades customizadas da Java virtual machine
Tópico de Tarefa    

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/tcgbuildbatch.html