Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

14.2.3 バッチアプリケーションの強制停止

実行中のバッチアプリケーションを必要に応じて停止させることができます。これを,バッチアプリケーションの強制停止といいます。ここでは,バッチアプリケーションの強制停止について説明します。

<この項の構成>
(1) 強制停止で実行される処理
(2) バッチアプリケーションの強制停止に失敗した場合に備えて

(1) 強制停止で実行される処理

実行中のバッチアプリケーションを強制停止するには,cjkilljobコマンドを使用します。cjkilljobコマンドを使用すると,バッチアプリケーションを実行しているスレッドに対してメソッドキャンセルを実行してバッチアプリケーションを強制停止します。

メソッドキャンセルとは,実行中のメソッドをキャンセルする機能です。ただし,メソッドを実行している領域によって,キャンセルできるメソッドとできないメソッドがあります。メソッドをキャンセルできる領域のことを非保護区,メソッドをキャンセルできない領域を保護区といいます。実行中のメソッドが非保護区の場合に,メソッドキャンセルが実行されます。バッチアプリケーションの強制停止で実行されるメソッドキャンセルは,J2EEアプリケーション実行時間の監視機能で実行されるメソッドキャンセルと同じです。メソッドキャンセルの処理については,「19.3.3 メソッドキャンセルとは」を参照してください。

バッチアプリケーション強制停止時の処理を次に示します。

  1. バッチアプリケーションの強制停止処理を開始することを示すメッセージ(KDJE55004-I)を出力します。
  2. public static void main(String[])メソッドまたはpublic static int main(String[])メソッドのメソッドキャンセルを実行します。
    なお,メソッドキャンセルに失敗した場合,KDJE55017-Eを出力して強制停止に失敗し,バッチサーバが強制停止します。強制停止に失敗した場合は,バッチサーバを再起動してください。
  3. バッチアプリケーションの強制停止処理が完了したことを示すメッセージ(KDJE55005-I)を出力します。
  4. フルガーベージコレクションを実行します。
  5. cjexecjobコマンドにバッチアプリケーションの終了コードを送信します。

次の表に,バッチアプリケーションの強制停止条件を示します。

表14-3 バッチアプリケーションの強制停止の条件

バッチアプリケーションの強制停止の条件 バッチサーバの動作 cjexecjobコマンドの動作
バッチアプリケーション実行中にバッチ強制停止コマンドを実行した。 KDJE55004-I出力して,バッチアプリケーションの実行を強制停止を開始する。強制停止の完了時にはKDJE55005-Iを出力する。強制停止に失敗したときはKDJE55017-Eを出力する。 バッチ強制終了時の正常パス
戻り値:1

(2) バッチアプリケーションの強制停止に失敗した場合に備えて

バッチアプリケーションの強制停止に失敗すると,バッチサーバが強制停止されます。複数のバッチアプリケーションを連続して実行する場合,バッチサーバの強制停止後に実行するバッチアプリケーションを開始する前に,バッチサーバを再起動する必要があります。このため,Management Serverを利用して,バッチサーバが自動的に再起動するように設定してください。