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


Creación de una aplicación de proceso por lotes utilizando POJO

En este tema se describen los pasos necesarios para crear y empaquetar una aplicación de proceso por lotes utilizando el modelo de programación POJO (Plain Old Java Object).

Antes de comenzar

El método preferido para crear una aplicación de proceso por lotes es crear una aplicación de proceso por lotes basada en POJO. Consulte Modelo de programación por lotes y Modelo de programación POJO para obtener más información.

Como opción, puede utilizar los siguientes scripts para sustituir los pasos 3 - 5 que se encuentran en la siguiente sección Procedimiento:

Establezca la propiedad personalizada com.ibm.websphere.ejbcontainer.expandCMPCFJNDIName de la máquina virtual Java. Consulte Propiedades personalizadas de la máquina virtual Java .

WSBatchPackager.sh
                 -properties=<nombre de archivo de propiedades>
                 [-debug]

o bien

WSBatchPackager.sh
-appname=<nombre de aplicación>
		-jobsteps="{{<nombre ejb>, <nombre jndi>, <clase de paso POJO> [, archivo jar, jars de programa de utilidad]}, ...}"
-jarfile=<archivo jar que contiene las clases de paso POJO>
-earfile=<nombre de archivo ear de salida>
[-utilityjars=<jars de programa de utilidad separados por punto y
coma>]
[-epjndiname=<nombre jndi de origen de datos de punto final/punto de
control>]
		[-nonxadsjndiname=<nombre JNDI de origen de datos no xa para CursorHoldableJDBCReader>;<nombre 2 JNDI de origen de datos no XA>;...]
		[-debug]

De manera alternativa, puede invocarse el empaquetador de la siguiente manera:

  java -jar batchpackager.jar 
                 -properties=<nombre de archivo de propiedades>
                 [-debug]

o bien

  java -jar batchpackager.jar
                 -appname=<nombre de aplicación>
                 -jobsteps="{{<nombre ejb>, <nombre jndi>, <clase de paso POJO> [, archivo jar, jars de programa de utilidad]}, ...}"
                 -jarfile=<archivo jar que contiene las clases de paso POJO>
                 -earfile=<nombre de archivo ear de salida>
                 [-utilityjars=<jars de programa de utilidad separados por punto y
coma>]
                 [-epjndiname=<nombre jndi de origen de datos de punto final/punto de
control>]
                 		[-nonxadsjndiname=<nombre JNDI de origen de datos no xa para CursorHoldableJDBCReader>;<nombre 2 JNDI de origen de datos no XA>;...]
                 [-debug]

Procedimiento

  1. Cree pasos de trabajo por lotes. Cree una nueva clase Java que implemente la interfaz com.ibm.websphere.BatchJobStepInterface. Implemente la lógica empresarial.

    Si el paso tiene exactamente un secuencia de entrada y una de salida, podría utilizar de forma alternativa la Paso por lotes genérico (GenericXDBatchStep) .

  2. Cree secuencias de datos por lotes. Cree una nueva clase Java que implemente la interfaz com.ibm.websphere.batch.BatchDataStream. Para acceder a las secuencias de datos por lotes desde la lógica empresarial (es decir, desde los pasos de trabajos por lotes), se invoca BatchDataStreamMgr con jobID y stepID. JobID y stepID se recuperan de la lista de propiedades de bean del paso utilizando las claves BatchConstants.JOB_ID y BatchConstants.STEP_ID. Correlacione BatchConstants.JOB_ID con com.ibm.websphere.batch.JobID y correlacione BatchConstants.STEP_ID con com.ibm.websphere.batch.StepID. Ya debe tener acceso a la clase BatchConstants.
    La infraestructura de secuencia de datos por lotes proporciona varios patrones listos para utilizar que funcionan con distintos tipos de secuencias de datos. Por ejemplo, archivo, base de datos, etc. Para utilizar la infraestructura de secuencia de datos por lotes:
    • Identifique el tipo de secuencia de datos con el que desea operar (TextFile, ByteFile, JDBC, secuencia z/OS),
    • Identifique si leerá o grabará datos de esta secuencia.
    • Consulte la tabla en Patrones e infraestructura de secuencia de datos por lotes y seleccione la clase en la columna de clases de soporte que coincide con la operación y tipo de secuencia de datos. Por ejemplo, si desea leer datos de un archivo de texto, utilizará TextFileReader.
    • Implemente la interfaz listada en la columna de nombre de patrón que corresponde a la clase de soporte que se ha seleccionado en el paso anterior. La clase de soporte maneja todas las actividades de contabilidad relacionadas con la secuencia y el modelo de programación por lotes, lo que permite que la clase de implementación se centre en la lógica de proceso de secuencia.
    • Declare la clase de soporte y la clase de implementación en el xJCL.
    • Repita este procedimiento para cada corriente de datos necesaria en el paso.
    		<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: PATTERN_IMPL_CLASS indica la implementación del usuario del patrón de la infraestructura de BDS y la propiedad impl-class indica la clase de soporte.
  3. Declare un controlador de trabajo por lotes.
    1. Añada un bean de sesión sin estado al descriptor de despliegue y apunte a la clase de implementación proporcionada por WebSphere Extended Deployment especificando com.ibm.ws.batch.BatchJobControllerBean como clase de bean. Hágalo sólo una vez por aplicación de proceso por lotes.
    2. Utilice com.ibm.ws.batch.BatchJobControllerHome para la clase de interfaz inicial remota y com.ibm.ws.batch.BatchJobController para la clase de interfaz remota.
  4. Declare el derivador de pasos de trabajo por lotes para los pasos por lotes de POJO.
    1. Añada un bean de entidad CMP como derivador para el paso por lotes en el descriptor de despliegue y apunte a la clase de implementación que proporciona WebSphere XD especificando com.ibm.ws.batch.DefaultBatchJobStepBean como clase de bean. Hágalo una vez por paso por lotes discreto en la aplicación.
    2. Utilice com.ibm.ws.batch.BatchJobStepLocalHomeInterface para la clase de interfaz inicial local y com.ibm.ws.batch.BatchJobStepLocalInterface para la clase de interfaz local.
    3. Especifique com.ibm.websphere.batch.BatchJobStepKey para la clase de clave y añada dos atributos CMP jobID y stepID de tipo java.lang.String
    4. Defina una entrada de entorno en el descriptor de despliegue de EJB para asociar la implementación del paso por lotes POJO con el derivador. Especifique POJOclass como nombre de entrada de entorno y el nombre de clase del paso de trabajo por lotes POJO como valor de entrada de entorno. Utilice java.lang.String como tipo de entrada de entorno.
  5. Configure el descriptor de despliegue de EJB.
    1. Referencia de recurso de EJB: añada una referencia para cada paso por lotes al bean de controlador de trabajos por lotes.
    2. WorkManager: configure una referencia de recurso en el bean de controlador al WorkManager wm/BatchWorkManager predeterminado del tipo commonj.work.WorkManager.
    3. Antememoria: para los derivadores de pasos de trabajo, establezca la antememoria del bean en Activate at ONCE (Activar a la vez) y Load at ACTIVATION (Cargar al activar).
    4. Transacciones: para asegurarse de que los pasos de trabajo se ejecutan en el ámbito de una transacción global, establezca el atributo de transacción según sea NECESARIO.

Ejemplo

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



Conceptos relacionados
Modelo de programación POJO
Tareas relacionadas
Desarrollo de una aplicación de proceso por lotes sencilla
Información relacionada
Propiedades personalizadas de la máquina virtual Java
Tema de tarea    

Condiciones de uso | Comentarios

Última actualización: 22-sep-2009 09H47' EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/tcgbuildbatch.html