Configuration de la persistance Java batch

Java™ batch peut configurer un référentiel de travaux afin d'utiliser un stockage de persistance pour conserver le statut, les points de contrôle et les données persistantes d'application sur 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é.

Référentiel des travaux

Un référentiel des travaux inclut soit un stockage de persistance pris en charge par une base de données, soit un stockage de persistance basé sur la mémoire utilisé à des fins de développement uniquement. La fonction de traitement par lots Liberty permet de définir un environnement dans lequel plusieurs serveurs peuvent utiliser un magasin persistant commun ou un référentiel de travaux. Il est important de comprendre que plusieurs fonctions sont incluses dans tous les serveurs configurés pour utiliser le même référentiel de travaux. Pour plus d'informations, voir Référentiel des travaux.

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

La persistance Batch permet à une instance de travail d'être redémarrée si l'exécution se termine à l'état FAILED ou STOPPED. En l'absence de configuration de base de données pour la persistance par lots, Java batch utilise par défaut la persistance basée sur la mémoire pour suivre le statut, les points de contrôle et les données persistantes d'application sur plusieurs exécutions d'une instance de travail.

Remarque: La persistance basée sur la mémoire par défaut est fournie avec une limitation évidente mais significative.  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

La persistance Batch peut être configurée via un magasin de base de données. Le magasin de base de données référence une source de données, laquelle référence un pilote JDBC, un emplacement de base de données spécifique et d'autres propriétés personnalisées de base de données.  Les noms qualifiés des tables de persistance Batch peuvent être configurés à l'aide des attributs schema et tablePrefix du magasin de base de données lui-même.

Un magasin de base de données par défaut, nommé defaultDatabaseStore, est fourni et activé en configurant la source de données par défaut, nommée DefaultDataSource.

Ou vous pouvez configurer un autre magasin de base de données à l'aide d'un élément databaseStore et configurer la persistance Batch pour l'utiliser en ajoutant un élément

batchPersistence avec un attribut jobStoreRef faisant référence à votre databaseStore.

Remarques sur le regroupement de connexions de base de données Java Batch

L'environnement d'exécution Java Batch suit en général un modèle get-use-close lorsqu'un appel est effectué à la base de données et qu'il ne s'applique généralement pas aux connexions JDBC plus longtemps que la durée d'utilisation.Cela signifie que la question du nombre de connexions nécessaires pour exécuter un nombre spécifique de travaux et de partitions sur un serveur est une décision qui revient entièrement à l'administrateur.

Il n'est pas nécessaire de configurer le pool de connexions avec une taille supérieure ou égale au nombre de travaux et de partitions en cours d'exécution pour éviter un interblocage. Le conflit de ressources, en raison du nombre trop peu élevé de connexions, peut tout de même conduire à des performances moins bonnes. En outre, il existe un nombre minimal de connexions requises, généralement supérieur à 1, pour exécuter des chemins spéciaux, tels que l'activation de composants Batch. Les administrateurs peuvent commencer avec les valeurs par défaut et utiliser des métriques et la surveillance de pool de connexions, par exemple, pour équilibrer la consommation des ressources par rapport aux performances. Cela s'applique à l'utilisation de l'environnement d'exécution des connexions JDBC. Les administrateurs peuvent tout de même avoir besoin de tenir compte du regroupement de connexions JDBC car il est utilisé par un code d'application.

Création automatique ou manuelle des tables de base de données

Par défaut, l'environnement d'exécution par lots crée automatiquement des tables non existantes dans le magasin de base de données de persistance du lot. Ce comportement de création automatique par défaut s'étend également aux tables existantes et à la création de nouvelles colonnes lorsque la maintenance qui contribue à ces nouvelles définitions de colonne est appliquée.

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 la source de données référencée par le magasin de base de données.

Remarque: Le langage de définition de données personnalisé doit utiliser des ID de clé primaire de type entier positif. 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 lots ne parvient pas à trouver les tables que vous avez créées manuellement.

Pour en savoir plus sur la création manuelle de tables en personnalisant le DDL généré, y compris les personnalisations possibles, voir le livre blanc Liberty Batch-Job Repository Configuration . Bien que ce livre blanc concerne DB2® sur les systèmes d'exploitation z/OS® , vous pouvez trouver les informations utiles pour d'autres bases de données et plateformes.

Exemples de configuration de la persistance

Magasin de base de données par défaut avec des tables créées automatiquement, configurées avec la base de données Derby RUNTIMEDB :

<!-- Derby JDBC driver --> 
<library id="DerbyLib"> 
    <fileset dir="${server.config.dir}/resources/derby" /> 
</library> 

<!-- Data source for batch tables, and possibly other components. --> 
<dataSource id="DefaultDataSource"> 
    <jdbcDriver libraryRef="DerbyLib" /> 
    <properties.derby.embedded  
        databaseName="${server.config.dir}/resources/RUNTIMEDB"     
        createDatabase="create" 
        user="user" password="pass" /> 
</dataSource> 

Magasin de base de données propre à Batch avec des tables créées manuellement, un schéma personnalisé, un préfixe de table, une source de données Batch

<batchPersistence jobStoreRef="BatchDatabaseStore"/>

<!-- DB Store config only used by batch components -->
<databaseStore id="BatchDatabaseStore" dataSourceRef="BatchDS"
    createTables="false" schema="HLQ" tablePrefix="JB1"/> 

<!-- Data source for batch tables --> 
<dataSource id="BatchDS"> 
    <jdbcDriver libraryRef="DerbyLib" /> 
     ...
</dataSource> 

Magasin de base de données par défaut avec une configuration d'authentification, un schéma personnalisé, des tables créées automatiquement, une source de données par défaut :

<!-- DB Store used by batch and possibly other runtime components. --> 
<databaseStore id="defaultDatabaseStore" schema="HLQ">
    <authData user="user1" password="password1"/>  
</databaseStore>

<!-- Data source for batch tables, and possibly other components. --> <dataSource id="DefaultDataSource"> 
    <jdbcDriver libraryRef="DerbyLib" /> 
    ...
</dataSource> 

Référence

Pour une discussion sur la création manuelle de tables en personnalisant le DDL généré, y compris les personnalisations possibles, voir le livre blanc: https://www.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP102716