バッチアプリケーションは,cjexecjobコマンドで開始します。バッチアプリケーションのmainメソッドの実行が終わると,バッチサーバはFullGCを実行します。ここでは,バッチアプリケーションの開始方法と,バッチアプリケーションの開始および終了時の処理について説明します。
なお,実行中のバッチアプリケーションを停止する場合には,強制停止をします。バッチアプリケーションの強制停止の方法については,「2.3.3 バッチアプリケーションの強制停止」を参照してください。
ここでは,バッチアプリケーションの開始方法について説明します。
バッチアプリケーションを開始するにはcjexecjobコマンドを使用します。cjexecjobコマンドを実行するには,次の四つの方法があります。
2.,3.,および4.の方法で,バッチアプリケーションを開始するときの,JP1/AJS,BJEX,およびJP1/Advanced Shellのジョブの定義については,「2.13 JP1/AJSとの連携」を参照してください。
なお,JP1/AJS,BJEX,およびJP1/Advanced Shellからバッチアプリケーションを実行する際には,あらかじめバッチサーバを起動しておいてください。
cjexecjobコマンドにバッチアプリケーションのクラス名とクラスパスを指定すると,cjexecjobコマンドに指定したバッチアプリケーションが開始します。バッチアプリケーション開始時の処理を次に示します。
バッチアプリケーションの開始時には,cjexecjobコマンドに指定した実行クラスのpublic static void main(String[])メソッドまたはpublic static int main(String[])メソッドが呼び出されます。メソッドの引数には,cjexecjobコマンドのクラス名のあとに指定した引数を設定します。
表2-3 バッチアプリケーションの開始に失敗する条件
バッチアプリケーションの開始に失敗する条件 | バッチサーバが出力するメッセージ |
---|---|
usrconf.properties(バッチアプリケーション用ユーザプロパティファイル)の読み込みに失敗した。 | KDJE55035-E |
cjexecjobコマンドに指定したクラスが存在しない。 | KDJE55006-E |
public static void main(String[])メソッドまたはpublic static int main(String[])メソッドが定義されていない。 | |
public static void main(String[])メソッドまたはpublic static int main(String[])メソッドのどちらともシグニチャが異なる。 | |
cjexecjobコマンドに指定したクラスのロード時に,java.lang.NoClassDefFoundErrorが発生した。 | KDJE55007-E |
public static void main(String[])メソッドまたはpublic static int main(String[])メソッド呼び出し時に必要なクラスが見つからない。 | |
static{}ブロック内でエラーが発生した。 | |
上記以外の問題でmainメソッドが実行できない。 | KDJE55008-E |
バッチアプリケーションは,mainメソッドの実行が終わると処理が終了します。バッチアプリケーション終了時に実行される処理を次に示します。
次の表に,バッチアプリケーションの終了条件と,そのときのバッチサーバやcjexecjobコマンドの動作を示します。
表2-4 バッチアプリケーションの終了条件
バッチアプリケーションの終了条件 | バッチサーバの動作 | cjexecjobコマンドの動作 |
---|---|---|
mainメソッドを最後まで実行した。 | KDJE55002-I出力して,バッチアプリケーションの実行を終了する。終了後にKDJE55003-Iを出力する。 | 正常終了する。 戻り値:0 |
public static void main(String[])メソッドでreturn文を実行した。 | ||
public static int main(String[])メソッドでreturn <終了コード>を実行した。 | 正常終了する。 戻り値:returnに指定した終了コード | |
mainメソッドの外に,java.lang.Throwableまたはjava.lang.Throwableを継承したクラスがスローされた。 | KDJE55009-Eを出力する。例外のスタックトレースを例外ログに出力する。バッチアプリケーションの実行を終了する。 | 例外のスタックトレースを標準エラー出力に出力する。バッチアプリケーションの実行を異常終了する。 戻り値:1 |
バッチサーバが終了した(バッチサーバの強制終了または予期しないJavaVMのダウン)。 | なし。 | KDJE55021-Eを出力して,バッチアプリケーションの実行を異常終了する。 戻り値:1 |
なお,バッチアプリケーション実行中に[Ctrl]+[C]やシグナルなどによってcjexecjobコマンドを終了しても,バッチアプリケーションの実行は終了しません。バッチアプリケーションの実行を強制停止したい場合は,cjkilljobコマンドを実行してください。ただし,cjkilljobコマンドで強制終了した場合,cjexecjobコマンドの終了コードは不定となります。バッチ強制停止コマンドについては,「2.3.3 バッチアプリケーションの強制停止」を参照してください。
バッチアプリケーションからEJBまたはDB Connectorを呼び出して使用する場合,バッチアプリケーションの開始時には,使用するEJBおよびDB Connectorがあるかどうかの確認は実施しません。バッチアプリケーションから参照しているEJBまたはDB Connectorがない場合は,バッチアプリケーション実行中に実行時エラーになります。バッチアプリケーションを開始する前に,参照先のEJBがあるかどうかを確認してください。また,DB Connectorを使用してバッチアプリケーションからデータベースに接続する場合は,バッチサーバでDB Connectorを開始しておいてください。