11.7 Java Batch実行用スレッドプールの設定
ジョブを実行するスレッドは,Java Batch専用のスレッドプールを使用します。ジョブの実行に使用するスレッドプールの設定はデフォルトのままでも動作しますが,同時実行スレッド数の制御や,受け入れジョブ数の制御のために,スレッドプールの設定をアプリケーションごとにチューニングできます。また,複数のアプリケーション同士でスレッドプールを共有することもできます。
次のユーザプロパティで,ジョブの実行に使用するスレッドプールのJNDI名をアプリケーションごとに指定してください。
ejbserver.javaee.batch.<J2EEアプリケーション名>.executorService.jndiName
<J2EEアプリケーション名>部分には,アプリケーション開始時にJ2EEサーバのメッセージKDJE42108-Iに出力されるJ2EEアプリケーション名を指定します。J2EEアプリケーション表示名(display-name)ではありませんので注意してください。
なお,設定先J2EEサーバ内のすべてのアプリケーションに適用する場合は,次のように<J2EEアプリケーション名>に「*」を指定してください。
ejbserver.javaee.batch.*.executorService.jndiName
どちらも未定義の場合は,JNDI名「concurrent/__BatchExecutorService」のスレッドプールが使用されます。
各スレッドプールのチューニングをするユーザプロパティを次の表に示します。
プロパティ名 |
指定内容 |
デフォルト値 |
---|---|---|
ejbserver.javaee.batch.executorService.<JNDI名>※.minThreads |
最小スレッド数 |
0 |
ejbserver.javaee.batch.executorService.<JNDI名>※.maxThreads |
最大スレッド数 |
2147483647 |
ejbserver.javaee.batch.executorService.<JNDI名>※.queueSize |
キューに待機可能なタスクの最大数 |
2147483647 |
ejbserver.javaee.batch.executorService.<JNDI名>※.keepAliveTime |
最小スレッド数を超えた使用後のスレッドを再利用するまで待機する最長時間 (単位:秒) |
60 |
ユーザプロパティの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」を参照してください。
Java Batch実行用スレッドプールのチューニングプロパティ設定値は,J2EEサーバ起動時にメッセージログに出力されるメッセージKDJE60511-Iで確認できます。
JNDI名の重複や不正値の使用などによって,Java Batch実行用スレッドプールのJNDI名前空間への登録に失敗した場合は,J2EEサーバ起動時にメッセージログにKDJE60512-Eが出力されます。スタックトレースが例外ログに出力されますが,J2EEサーバの起動処理は続行します。
Java Batch実行用スレッドプールは,該当するスレッドプールを使用するジョブの初回実行時に初期化され,初期スレッド数に指定した数のスレッドが生成されます。生成されるスレッドは,スレッド名が「<JNDI名>-managedThreadFactory」から始まる名称となります。
何らかの理由によって初期化に失敗した場合はメッセージログにKDJE60513-Eが出力されます。バッチの開始時(startメソッド)であればjavax.batch.operations.JobStartExceptionが,バッチの再開時(restartメソッド)であればjavax.batch.operations.JobRestartExceptionが呼び出し元にスローされます。
スレッドプールはJ2EEサーバの停止時に破棄されます。