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 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 Batch, Java Batch prend par défaut une 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.
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 proprement dit.
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 connexion de base de données Java Batch
L'environnement d'exécution Java Batch suit généralement un modèle get-use-close lorsqu'un appel est émis vers la base de données et il ne conserve pas les connexions JDBC plus longtemps qu'il ne les utilise.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.
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 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. Ce livre blanc concerne les systèmes d'exploitation DB2 on z/OS, mais les informations qu'il contient vous seront peut-être 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 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 : https://www.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP102716