17.8.12 J2EEアプリケーションの更新検知とリロードの設定
アプリケーション開発でのテストやシステムの運用中に,修正したJ2EEアプリケーションと動作中のJ2EEアプリケーションを入れ替えたい場合,リロード機能を使用した入れ替えができます。展開ディレクトリ形式のJ2EEアプリケーションを構成するファイルを更新した場合に,更新検知やコマンド実行によって,更新したJ2EEアプリケーションをリロードできます。リロード機能を使用することで,少ない手順でJ2EEアプリケーションを動的に入れ替えられるようになります。
この項では,展開ディレクトリ形式のJ2EEアプリケーションの更新検知とリロードをするための設定について説明します。コマンドやファイルのキーについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」,およびマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。
展開ディレクトリ形式のJ2EEアプリケーションをリロードするために必要な設定は,構成ファイルの更新を検知してリロードするか,コマンドを実行してリロードするかによって異なります。展開ディレクトリ形式のJ2EEアプリケーションをリロードするために必要な設定を次の表に示します。
設定項目 |
更新検知によるリロードの場合 |
コマンドによるリロードの場合 |
---|---|---|
リロード機能の適用範囲の設定 |
○ |
○ |
更新検知インターバルの設定 |
○ |
− |
構成ファイル更新用インターバルの設定 |
○ |
− |
リロード遅延実行の設定 |
○ |
− |
セッション情報ファイル格納先ディレクトリの変更 |
△ |
△ |
JSP事前コンパイルの設定 |
△ |
△ |
J2EEアプリケーション実行時間の監視の設定 |
△ |
△ |
- 〈この項の構成〉
(1) リロード機能の適用範囲の設定
リロード機能の適用範囲の設定は,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に指定します。
-
ejbserver.deploy.context.reload_scope
リロード機能を使用するかどうか,またリロードの対象を指定します。
-
app:EJBアプリケーション(EJB-JAR)とWebアプリケーション(WAR)をリロードの対象とする。
-
web:Webアプリケーション(WAR)だけをリロードの対象とする。
-
jsp:JSPだけをリロードの対象とする。
-
none:リロード機能を使用しない。
-
デフォルトの設定では,リロード機能は無効になっています。リロード機能を使用するためには,リロード機能を有効にして,適用範囲を設定する必要があります。
なお,リロード機能の有効/無効は,usrconf.propertiesのejbserver.rmi.localinvocation.scopeパラメタで指定するローカル呼び出し最適化機能の適用範囲と,リロード機能の適用範囲の組み合わせによって決まります。ローカル呼び出し最適化機能の適用範囲とリロード機能の適用範囲の対応については,「17.8.2 リロードの適用範囲」を参照してください。
(2) 更新検知インターバルの設定
更新検知インターバルの設定は,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に指定します。簡易構築定義ファイルでの更新検知インターバルの設定について次の表に示します。
指定するパラメタ |
設定内容 |
---|---|
J2EEアプリケーションの構成ファイルを監視して更新を検知する間隔(秒)を指定します。 |
|
Webアプリケーションの構成ファイルを監視して更新を検知する間隔(秒)を指定します。 |
|
JSPの構成ファイルを監視して更新を検知する間隔(秒)を指定します。 |
更新検知インターバルの設定値の関係を次に示します。
- EJBアプリケーションの場合
-
ejbserver.deploy.context.check_intervalの値が使用されます。なお,ejbserver.deploy.context.check_intervalに0を指定している場合,EJBアプリケーションは更新検知されません。
- サーブレットの場合
-
webserver.context.check_intervalまたはejbserver.deploy.context.check_intervalの値が使用されます。優先順位を次に示します。
-
webserver.context.check_intervalの値
-
ejbserver.deploy.context.check_intervalの値
なお,webserver.context.check_intervalを指定していない場合には,ejbserver.deploy.context.check_intervalの値が使用されます。
また,webserver.context.check_intervalに0を指定している場合,サーブレットは更新検知されません。
-
- JSPの場合
-
webserver.jsp.check_intervalまたはejbserver.deploy.context.check_intervalの値が使用されます。優先順位を次に示します。
-
webserver.jsp.check_intervalの値
-
ejbserver.deploy.context.check_intervalの値
なお,webserver.jsp.check_intervalを指定していない場合には,ejbserver.deploy.context.check_intervalの値が使用されます。
また,webserver.jsp.check_intervalに0を指定している場合,JSPは更新検知されません。
-
(3) 構成ファイル更新用インターバルの設定
構成ファイル更新用インターバルは,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に指定します。簡易構築定義ファイルでの構成ファイル更新用インターバルの設定について次の表に示します。
指定するパラメタ |
設定内容 |
---|---|
J2EEアプリケーションの構成ファイルのコピーに必要な時間(秒)を指定します。 |
|
Webアプリケーションの構成ファイルのコピーに必要な時間(秒)を指定します。 |
|
JSPの構成ファイルのコピーに必要な時間(秒)を指定します。 |
構成ファイル更新用インターバルの設定値の関係を次に示します。
- EJBアプリケーションの場合
-
ejbserver.deploy.context.update.intervalの値が使用されます。
- サーブレットの場合
-
webserver.context.update.intervalまたはejbserver.deploy.context.update.intervalの値が使用されます。優先順位を次に示します。
-
webserver.context.update.intervalの値
-
ejbserver.deploy.context.update.intervalの値
webserver.context.update.intervalを指定していない場合には,ejbserver.deploy.context.update.intervalの値が使用されます。
-
- JSPの場合
-
webserver.jsp.update.intervalまたはejbserver.deploy.context.update.intervalの値が使用されます。優先順位を次に示します。
-
webserver.jsp.update.intervalの値
-
ejbserver.deploy.context.update.intervalの値
webserver.jsp.update.intervalを指定していない場合には,ejbserver.deploy.context.update.intervalの値が使用されます。
-
(5) セッション情報ファイル出力先の変更
Webアプリケーションをリロードする場合は,リロード実行前に生成したセッション情報を引き継いで,リロード後も継続して利用します。セッション情報は,セッション情報ファイルに出力されます。
- セッション情報ファイルの出力先
-
セッション情報ファイルは,デフォルトでは次の場所に出力されます。
-
Windowsの場合
<Application Serverのインストールディレクトリ>\CC\server\repository\<サーバ名>\web\<コンテキストルート名>\cjwebsession.dat
-
UNIXの場合
/opt/Cosminexus/CC/server/repository/<サーバ名>/web/<コンテキストルート名>/cjwebsession.dat
-
- Webアプリケーション単位のディレクトリ名
-
Webアプリケーション単位のディレクトリは,コンテキストルート名を基に規則に従ったディレクトリ名となります。コンテキストルート名にスラッシュ(/),ドル記号($),パーセント(%),プラス記号(+)が含まれる場合は,次に示す文字に変換します。
変換前の文字
変換後の文字
/
$2f
$
$24
%
$25
+
$2b
出力先となるコンテキストルート名のディレクトリは,Webアプリケーションの開始時に作成されます。ただし,コンテキストルートがルートコンテキストの場合は,出力先ディレクトリのコンテキストルートは「$2f」として作成されます。作成されたディレクトリは,Webアプリケーションの終了時に削除されます。
セッション情報ファイルの出力先を変更する場合には,簡易構築定義ファイルで設定します。論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,次のパラメタを設定します。
-
ejbserver.deploy.session.work.directory
Webアプリケーションのセッション情報ファイルの出力先を指定します。
ejbserver.deploy.session.work.directoryパラメタで指定したディレクトリ下に,「web\<コンテキストルート名>」というディレクトリが作成されて,そのディレクトリ下にセッション情報ファイルが出力されます。
- (例)セッション情報ファイルの出力先の設定例
<configuration> <logical-server-type>j2ee-server</logical-server-type> <param> <param-name>ejbserver.deploy.session.work.directory</param-name> <param-value>C:\tmp\session_work</param-value> </param> : </configuration>
この設定例の場合,コンテキストルート名が「examples」のWebアプリケーションのセッション情報ファイルは,次の場所に出力されます。
C:\tmp\session_work\web\examples\cjwebsession.dat
(6) JSP事前コンパイルの設定
JSP事前コンパイルでJSPファイルから生成されたクラスファイルを更新した場合も,J2EEアプリケーションの構成ファイルの更新を検知し,リロードが実行されます。
cjstartappコマンドに-jspcオプションを指定してJSP事前コンパイルを実行する場合には,usrconf.propertiesでJSPワークディレクトリなどを設定しておく必要があります。JSP事前コンパイルの設定については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.5.8 実行環境での設定(J2EEサーバの設定)」を参照してください。
なお,アプリケーション開発時にcjjspcコマンドを使用してJSP事前コンパイルを実行する場合には,JSPワークディレクトリなどはコマンドのオプションで指定します。cjjspcコマンドを使用したJSPの事前コンパイルについては,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」の「2.5 JSP事前コンパイル機能とコンパイル結果の保持」を参照してください。
(7) J2EEアプリケーション実行時間の監視の設定
構成ファイルの更新を検知した場合,処理中のリクエストの処理が完了するとリロード処理を開始しますが,処理中のリクエストの処理が完了しない場合には,J2EEアプリケーション実行時間の監視のメソッドタイムアウトおよびメソッドキャンセルを実施することで,リロード処理を開始できます。
必要に応じて,J2EEアプリケーション実行時間の監視を設定してください。J2EEアプリケーション実行時間の監視の設定については,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「5.3.9 実行環境での設定」を参照してください。