2.3.7 バッチアプリケーションの実装(バッチアプリケーションの作成規則)
バッチアプリケーションとは,バッチ処理の内容を実装したJavaアプリケーションです。ここでは,バッチアプリケーションの作成規則について説明します。
(1) バッチアプリケーションのファイル形式
バッチアプリケーションは,JavaVMで規定しているクラスファイル形式にします。なお,複数のクラスを使用する場合は次のこともできます。
-
クラスファイルを配置したディレクトリをクラスパスに含める。
-
クラスファイルをアーカイブしたJARファイルをクラスパスに含める。
(2) バッチアプリケーションに実装できる処理
バッチアプリケーションには,Javaで記述できる処理を実装できます。ただし,ファイルの操作やバッチアプリケーション内で使用するスレッドなどについて,使用時の注意事項があります。アプリケーション作成時の注意については,「2.3.11 バッチアプリケーション作成時の注意」を参照してください。
(3) バッチ処理の開始
バッチ処理の開始メソッドとして,次のどちらかのメソッドをバッチアプリケーションに定義してください。
-
public static void main(String[])
-
public static int main(String[])
mainメソッドの戻り値の型と修飾子が異なる場合,バッチアプリケーションは実行できません。なお,mainメソッドにはthrowsを指定できます。mainメソッドの引数には,cjexecjobコマンドに指定した引数が文字列配列で渡されます。
また,JavaVM終了メソッドを使用できる設定にした場合は,バッチアプリケーションの開始時に,バッチサーバによってバッチアプリケーション実行開始スレッドが作成され,スレッドグループ(batchThreadGroup)に登録されます。JavaVM終了メソッドは,簡易構築定義ファイルでejbserver.batch.application.exit.enabledパラメタに「true」を指定した場合に使用できます。ejbserver.batch.application.exit.enabledパラメタの設定については,「2.3.10 実行環境での設定(バッチサーバの設定)」を参照してください。
(4) バッチ処理の終了
バッチアプリケーションが次のどちらかの状態になると処理が終了します。
-
cjexecjobコマンドの引数に指定したクラスのmainメソッドの実行が終了する。
-
例外やエラーがmainメソッドの外にスローされる。
また,次のどれかの状態になると,バッチアプリケーションのスレッド(batchThreadGroupに属するスレッド)が終了します。
-
JavaVM終了メソッドを呼び出す。
-
mainメソッドがリターンする。
-
mainスレッドで発生した例外がキャッチされない。
バッチアプリケーション終了時に使用できる終了処理を次の表に示します。
バッチアプリケーションの終了方法 |
使用できる終了処理 |
||
---|---|---|---|
java.io.deleteOnExit |
シャットダウンフック |
||
JavaVM終了メソッドの呼び出しによる終了 |
java.lang.System.exit(int)の呼び出しによる終了 |
○ |
○ |
java.lang.Runtime.exit(int)の呼び出しによる終了 |
○ |
○ |
|
java.lang.Runtime.halt(int)の呼び出しによる終了 |
○ |
× |
|
[Ctrl]+[C]による終了 |
× |
× |
|
mainメソッドのリターンによる終了 |
○ |
○ |
|
mainスレッドでの例外発生による終了 |
○ |
○ |
なお,JavaVM終了メソッドは,簡易構築定義ファイルでejbserver.batch.application.exit.enabledパラメタに「true」を指定した場合に使用できます。ejbserver.batch.application.exit.enabledパラメタの設定については,「2.3.10 実行環境での設定(バッチサーバの設定)」を参照してください。