Configuration de la persistance Java batch

Java batch utilise un stockage de persistance pour conserver l'état, les points de contrôle et les données persistantes des applications à travers plusieurs exécutions d'une instance de travail. Le stockage de persistance permet à une instance de travail d'être redémarrée si une exécution antérieure échoue ou doit être arrêtée, en fournissant les données appropriées au travail redémarré.

Configuration de la persistance basée sur la mémoire Java batch

La persistance des lots permet à une instance de travail d'être redémarrée si l'exécution se termine à l'état FAILED ou STOPPED. Si la persistance des lots n'est pas configurée, Java batch utilise une fonctionnalité par défaut de la persistance basée sur la mémoire pour suivre l'état, les points de contrôle et les données persistantes des applications sur plusieurs exécutions d'une instance de travail.

L'implémentation de la persistance basée sur la mémoire par défaut pour Java batch est utilisée par le conteneur de lots sous-jacent lorsque aucun élément batchPersistence et databaseStore n'est présent dans le fichier server.xml.

Remarque : Comme limitation de la persistance basée sur la mémoire Java batch, par défaut, la persistance dans Java batch est basée sur la mémoire. Si l'environnement d'exécution du conteneur de lots ou la machine virtuelle du serveur tombe en panne ou redémarre, la persistance est perdue. Cette fonction est uniquement conçue à des fins de développement et ne doit pas être considérée pour les systèmes de production ou pour la prise en charge d'un traitement par lots critique.

Configuration de la persistance de base de données Java batch

Par défaut, l'environnement d'exécution par lots crée automatiquement des tables non existantes en fonction de la configuration du serveur définie dans l'élément databaseStore. Les définitions des tables sont personnalisées conformément aux attributs schema et tablePrefix de la librairie de base de données.

Comme alternative, le script ddlGen peut être utilisé pour générer un langage DDL basé sur la configuration du serveur. Si nécessaire, le DDL peut être personnalisé avant de créer les tables manuellement. Ce DDL incorpore également la configuration du serveur comme schema et tablePrefix et contient le langage SQL approprié pour le type de base de données de l'élément de source de données référencé par l'élément databaseStore.

Remarque : Le DDL personnalisé doit utiliser des entiers positifs pour les ID de clé primaire. Limitation de la persistance de base de données : Java Batch n'accepte pas d'entiers négatifs ou de zéros persistants dans les colonnes d'identité de clé primaire. L'environnement d'exécution de conteneur Java Batch exécute uniquement les travaux utilisant des entiers positifs persistants pour les ID de travaux dans les colonnes d'identité de clé primaire.

La création automatique des tables peut être désactivée à l'aide de l'attribut createTables="false" sur databaseStore. Vous pouvez utiliser cette option pour vous assurer que vous utilisez des tables créées manuellement, au lieu de tables créées automatiquement, si l'environnement d'exécution par lot ne parvenait pas à trouver les tables que vous avez créées manuellement.

Les exemples suivants utilisent le comportement par défaut de création automatique. Ce comportement équivaut à createTables="true".

Remarque : Pour éviter des problèmes d'intégrité de données liés à l'utilisation d'un niveau d'isolement inférieur à REPEATABLE_READ, affectez la valeur TRANSACTION_REPEATABLE_READ au niveau d'isolement de la source de données. Si vous n'indiquez pas un niveau d'isolement, la valeur par défaut dépend de la base de données. Dans la plupart des cas, la valeur par défaut est TRANSACTION_REPEATABLE_READ.

Exemple de configuration de la persistance

L'exemple suivant configure l'accès des lots à la table de base de données cible RUNTIMEDB créée automatiquement pour Derby.
 <!-- Batch persistence config.  References a databaseStore. -->
    <batchPersistence jobStoreRef="BatchDatabaseStore" />

    <!-- The database store for the batch tables.  -->
    <!-- Note this database store is referenced by the batchPersistence element. -->
    <databaseStore id="BatchDatabaseStore" dataSourceRef="batchDB" schema="JBATCH" tablePrefix="" />

    <!-- Derby JDBC driver -->
    <!-- Note this library is referenced by the dataSource element -->
    <library id="DerbyLib">
        <fileset dir="${server.config.dir}/resources/derby" />
    </library>

    <!-- Data source for the batch tables. -->
    <!-- Note this data source is referenced by databaseStore element --> 
    <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> 

Icône indiquant le type de rubrique Rubrique de référence

Nom du fichier : rwlp_batch_persistence_config.html