Java バッチのパーシスタンス構成

Java バッチでは、パーシスタント・ストアを使用して状況、特定のジョブ・インスタンスの複数回の実行をまたいでチェックポイント、およびアプリケーション・パーシスタント・データを永続化します。パーシスタント・ストアにより、前の実行が失敗した場合、または前の実行を停止しなければならない場合に、再開されるジョブに該当するデータを提供して、ジョブ・インスタンスを再開できます。

Java バッチのメモリー・ベースのパーシスタンス構成

バッチのパーシスタンスにより、ジョブ・インスタンスが FAILED または STOPPED 状態で終了しても、その実行を再開できます。バッチのパーシスタンス構成がない場合、Java バッチは、メモリー・ベースのパーシスタンスのデフォルト機能を使用して、特定のジョブ・インスタンスの複数回の実行にまたがる状況、チェックポイント、およびアプリケーション・パーシスタント・データを追跡します。

Java バッチのデフォルトのメモリー・ベースのパーシスタンス実装は、server.xml ファイルに batchPersistence および databaseStore elements が存在しない場合に、基盤のバッチ・コンテナーによって使用されます。

注: Java バッチのメモリー・ベースのパーシスタンスの制限として、デフォルトでは、Java バッチでのパーシスタンスはメモリーに基づきます。バッチ・コンテナー・ランタイムまたはサーバー JVM が異常終了または再始動した場合、パーシスタンスは失われます。この機能は開発用のみであり、実動システムや重要なバッチ処理のサポート用に使用してはなりません。

Java バッチのデータベース・パーシスタンス構成

デフォルトでは、バッチ・ランタイムは、databaseStore エレメントに定義されているサーバー構成に基づいて、存在しない表を自動作成します。表定義は、データベース・ストアの schema 属性および tablePrefix 属性に基づいて、カスタマイズされます。

代わりに、ddlGen スクリプトを使用して、サーバー構成に基づいて DDL を生成することができます。必要に応じて、手動で表を作成する前に DDL をカスタマイズすることができます。この DDL は、schematablePrefix などのサーバー構成も取り込み、databaseStore によって参照されているデータ・ソースのデータベース・タイプに該当する SQL を含みます。

注: カスタマイズされた DDL は、正整数の 1 次キー ID を使用する必要があります。データベース・パーシスタンスの制限として、 Java バッチは、1 次キー ID 列に永続的に保持される ID として負およびゼロの整数を受け入れません。Java バッチ・コンテナー・ランタイムは、 1 次キー ID 列に永続的に保持される正整数のジョブ ID を使用するジョブのみを実行します。

表の自動作成を無効にするには、databaseStore で createTables="false" 属性を使用します。このオプションを使用して、手動で作成した表をバッチ・ランタイムが予期せず検出できなかった場合でも、自動作成された表を使用するのではなく、手動で作成された表を確実に使用できます。

以下の例では、デフォルトの自動作成動作が使用されています。この動作は、createTables="true" と等価です。

注: REPEATABLE_READ より低い分離レベルに起因するデータ保全性の問題を回避するために、 データ・ソースの分離レベルは TRANSACTION_REPEATABLE_READ に設定してください。 分離レベルを指定しない場合、デフォルトはデータベースに依存します。 ほとんどの場合、デフォルトは TRANSACTION_REPEATABLE_READ です。

パーシスタンス構成のサンプル

以下のサンプルでは、Derby の自動作成されたターゲット・データベース表 RUNTIMEDB へのバッチ・アクセスを構成します。
 <!-- 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> 

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_batch_persistence_config
ファイル名: rwlp_batch_persistence_config.html