Configuración de la persistencia por lotes Java

El proceso por lotes Java utiliza un almacén persistente para persistir el estado, los puntos de comprobación y los datos persistentes de la aplicación en varias ejecuciones de una instancia de trabajo. El almacén persistente permite reiniciar una instancia de trabajo si una ejecución anterior falla o debe detenerse proporcionando el trabajo reiniciado con los datos adecuados.

Configuración de la persistencia basada en memoria por lotes Java

La persistencia por lotes permite reiniciar una instancia de trabajo si la ejecución finaliza con un estado FAILED o ERROR. En ausencia de la configuración de persistencia por lotes, el proceso por lotes Java utiliza la funcionalidad predeterminada de persistencia basada en memoria para rastrear el estado, los puntos de comprobación y los datos persistentes de la aplicación en varias ejecuciones de una instancia de trabajo.

El contenedor de procesos por lotes subyacente utiliza la implementación de permanencia basada en memoria predeterminada para el proceso por lotes Java cuando no hay ningún elemento batchPersistence ni databaseStore presente en el archivo server.xml.

Nota: Como limitación de la persistencia basada en memoria del proceso por lotes Java, de forma predeterminada, la persistencia en el proceso por lotes Java se basa en la memoria. Si la JVM del servidor o el tiempo de ejecución del contenedor por lotes se cuelga o se reinicia, la persistencia se pierde.Esta función sólo está destinada a utilizarse para el desarrollo y no debe tenerse en cuenta para sistemas de producción o para el soporte de proceso por lotes crítico.

Configuración de la persistencia de base de datos por lotes Java

De forma predeterminada, el tiempo de ejecución por lotes crea automáticamente tablas no existentes basándose en la configuración de servidor definida en el elemento databaseStore. Las definiciones de las tablas se personalizan en función de los atributos schema y tablePrefix del almacén de base de datos.

De forma alternativa, se puede utilizar el script ddlGen para generar un DDL en la configuración del servidor. Si es necesario, se puede personalizar el DDL antes de crear manualmente las tablas. Este DDL también incorpora la configuración de servidor como schema y tablePrefix y contiene el SQL adecuado para el tipo de base de datos del origen de datos al que hace referencia databaseStore.

Nota: El DDL personalizado debe utilizar ID de clave primaria que sean enteros positivos. Como limitación para la persistencia de base de datos, el proceso por lotes Java no acepta ID de enteros negativos o cero persistidos en las columnas de identidad de clave primaria. El tiempo de ejecución del contenedor de proceso por lotes Java sólo ejecuta trabajos que utilizan ID de trabajo de enteros positivos persistidos en las columnas de identidad de clave primaria.

La creación automática de tablas se puede inhabilitar utilizando el atributo createTables="false" en databaseStore. Esta opción puede utilizarse para garantizar que se usan tablas creadas manualmente en lugar de usar tablas creadas automáticamente si inesperadamente el tiempo de ejecución por lotes no puede encontrar las tablas que ha creado manualmente.

Los siguientes ejemplos utilizan el comportamiento de creación automática predeterminado. Este comportamiento es equivalente a createTables="true".

Nota: Para evitar problemas de integridad de datos provocados por tener un nivel de aislamiento menor que REPEATABLE_READ, establezca el nivel de aislamiento del origen de datos en TRANSACTION_REPEATABLE_READ. Si no especifica un nivel de aislamiento, el valor predeterminado depende de la base de datos. En la mayoría de los casos, el valor predeterminado es TRANSACTION_REPEATABLE_READ.

Ejemplo de configuración de persistencia

El ejemplo siguiente configura el acceso por lotes a la tabla de base de datos de destino creada automáticamente RUNTIMEDB por Derby.
 <!-- Batch persistence config.  Hace referencia a un databaseStore. -->
    <batchPersistence jobStoreRef="BatchDatabaseStore" />

    <!-- El almacén de base de datos de las tablas por lotes.  -->
    <!-- Observe que este almacén de base de datos está referenciado por el elemento batchPersistence. -->
    <databaseStore id="BatchDatabaseStore" dataSourceRef="batchDB" schema="JBATCH" tablePrefix="" />

    <!-- Controlador JDBC de Derby -->
    <!-- Observe que esta biblioteca está referenciada por el elemento dataSource -->
    <library id="DerbyLib">
        <fileset dir="${server.config.dir}/resources/derby" />
    </library>

    <!-- El origen de datos de las tablas por lotes. -->
    <!-- Observe que este origen de datos está referenciado por el elemento databaseStore --> 
    <dataSource id="batchDB" isolationLevel="TRANSACTION_REPEATABLE_READ" >
        <jdbcDriver libraryRef="DerbyLib"/>
        <properties.derby.embedded 
            databaseName="${server.config.dir}/resources/RUNTIMEDB"
            createDatabase="create" 
            user="user" 
            password="pass" />
    </dataSource> 

Icono que indica el tipo de tema Tema de referencia



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_batch_persistence_config
Nombre de archivo:rwlp_batch_persistence_config.html