2.3.1 バッチアプリケーション実行機能の概要
バッチアプリケーション実行機能とは,バッチアプリケーションを実行するための機能です。バッチアプリケーションは,バッチアプリケーション実行機能で提供されているバッチクラスローダ上で実行されます。また,実行中のバッチアプリケーションが出力した内容は,ログ出力機能に出力されます。
バッチアプリケーション実行機能について次の図に示します。
また,バッチアプリケーション実行機能は,EJBアクセス機能やリソース接続機能と連携できます。
-
EJBアクセス機能と連携すると,バッチアプリケーションからほかのJ2EEサーバのEJBにアクセスできます。
-
リソース接続機能と連携すると,バッチアプリケーションからデータベースに接続できます。
EJBアクセス機能については「2.4.1 EJBアクセスで使用できる機能」を,リソース接続機能については「2.7 リソース接続機能」を参照してください。
次に,バッチアプリケーションのライフサイクルとバッチアプリケーションを実行するクラスローダについて説明します。
(1) バッチアプリケーションのライフサイクル
バッチアプリケーションは,cjexecjobコマンドを使用して開始します。次の図を使用して,バッチアプリケーションのライフサイクルについて説明します。
-
cjexecjobコマンドを実行すると,バッチアプリケーションはバッチクラスローダによってロードされます。
-
バッチアプリケーションがバッチサーバ上で実行されます。
-
バッチアプリケーションの処理が終了します。
バッチアプリケーションの処理終了後に,バッチアプリケーションをロードしたバッチクラスローダがGCされます。
-
バッチアプリケーションのクラスがアンロードされます。
- 注意事項
-
バッチアプリケーションはcjexecjobコマンドが実行されるたびにバッチクラスローダにロードされ,処理が完了するとクラスがアンロードされます。常駐形式のバッチアプリケーションをバッチサーバ上で動作させることは推奨しません。
(2) バッチアプリケーションの状態遷移
バッチアプリケーションの状態遷移を次の図に示します。
「RUNNING」は,バッチアプリケーションがバッチサーバ上にあって実行中の状態です。
バッチアプリケーションの状態は,バッチアプリケーション情報から確認できます。バッチアプリケーション情報の表示方法については,「2.3.4 バッチアプリケーション情報の一覧表示」を参照してください。
(3) バッチアプリケーションを実行するクラスローダ
バッチアプリケーション実行時には,バッチサーバ上でバッチアプリケーション用のクラスローダが生成されます。バッチアプリケーションはクラスローダ上で実行されます。バッチアプリケーション用のクラスローダの構成を次の図に示します。
図のそれぞれのクラスローダについて説明します。
-
システムクラスローダ
アプリケーションサーバの構成ソフトウェアが提供するクラスやコンテナ拡張ライブラリのクラスをロードします。
-
生成タイミング:J2EEサーバ起動時
-
破棄タイミング:J2EEサーバ停止時
-
-
コネクタクラスローダ
リソースアダプタに含まれるクラスをロードします。バッチサーバ内に一つだけ存在します。
-
生成タイミング:J2EEサーバ起動時
-
破棄タイミング:J2EEサーバ停止時
-
-
バッチクラスローダ
バッチアプリケーションに含まれるクラスをロードします。バッチアプリケーションを実行するスレッドのコンテキストクラスローダは,バッチクラスローダです。
-
生成タイミング:バッチアプリケーション実行時
-
破棄タイミング:バッチアプリケーション終了時
-
なお,バッチクラスローダ生成時には,バッチクラスローダが生成されたことを示すメッセージが出力されます(メッセージKDJE55013-I)。また,バッチクラスローダのファイナライズ処理が実行されたことを示すメッセージも出力されます(メッセージKDJE55014-I)。
クラスローダの破棄についての注意事項は,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「付録B.1 デフォルトのクラスローダ構成」を参照してください。なお,クラスローダの破棄のタイミング,クラスローダの破棄時に出力されるメッセージについては適宜読み替えてください。