|
Interstage Application Server J2EE ユーザーズガイド
|
目次
索引

|
3.2 J2EEアプリケーションの配備と設定
■J2EEアプリケーションの配備
J2EEアプリケーションを実行環境に配備します。
- Webアプリケーション、EJBアプリケーションの場合は、Interstage管理コンソール、または、ijsdeploymentコマンドを使用します。
必要に応じて、IJServerを作成し、パッケージ化したアプリケーションを配備してください。
ijsdeploymentコマンドについては、“リファレンスマニュアル(コマンド編)”の“J2EE運用コマンド”を参照してください。
- J2EEアプリケーションクライアントの場合は、クライアントの実行環境へclient-jarファイルを複写して、jarコマンド等を使用し、client-jarファイルの中のdeployment descriptorファイルを任意のディレクトリに解凍します。
なお、EARファイルにJ2EEアプリケーションクライアントが含まれている場合は、Interstage管理コンソールの配備機能を使用してEARファイルから展開してください。そして、解凍したファイルの中からclient-jarファイルを取り出します。
J2EEアプリケーションクライアントの展開先については、“IJServerのファイル構成”を参照してください。

- EJBアプリケーションの配備ではJavacを実行するため、JREの環境では配備に失敗します。JDKの環境をインストールするようにしてください。
J2EEのHotDeploy機能を使用すると、IJServerを停止せずにモジュールの配備または再配備、配備解除が実行でき、運用中のIJServerに対してWebアプリケーションとEJBアプリケーションを追加または更新、削除できます。
配備中、または配備解除中ではないモジュールに対してリクエスト処理を行うことができるため、アプリケーションの開発が効率的に実施でき、IJServerの連続運用も可能です。
◆HotDeploy機能を使用しない場合のアプリケーション入れ替え方法

J2EEのHotDeploy機能を使用すると、以下のように配備のみでアプリケーションを入れ替えることが可能です。
◆HotDeploy機能を使用した場合のアプリケーション入れ替え方法

HotDeploy機能について、以下の順で説明します。
開発効率の向上、および運用中の保守性の向上を目的とした機能として“HotDeploy機能”と“クラスのオートリロード機能”を提供しています。HotDeploy機能だけを使用しても十分な効果がありますが、クラスのオートリロード機能を使用することで、さらに開発効率が向上する場合があります。クラスのオートリロード機能については、“クラスのオートリロード機能”を参照してください。
HotDeploy機能を使用する場合は、Interstage管理コンソールの[ワークユニット] > [新規作成]タブを選択し、[詳細設定]表示後の[共通定義]より設定してください。また、ワークユニット作成後は、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定]タブを選択し[共通定義]から変更できます。
HotDeploy機能を使用する場合は、後述の新規モジュールの配備または既存配備モジュールの再配備を効率的に行うため、HotDeploy機能を使用しない場合とIJServerの起動状態が異なる場合があります。
以下に、配備モジュールとIJServerの起動状態の関係について説明します。
- 配備モジュールが存在しない場合のIJServerの起動状態
HotDeploy機能を使用する/しないに関係なく、配備モジュールが存在しない場合はIJServerの起動に失敗します。
- 配備モジュールが存在する場合のIJServerの起動状態
IJServerタイプが“WebアプリケーションとEJBアプリケーションを別JavaVMで運用”の場合は、以下のとおりです。
それ以外のIJServerタイプは、下図に示すHotDeploy機能を使用しない場合と同様です。
- WebアプリケーションおよびEJBアプリケーションを配備した場合
HotDeploy機能の使用する/しないに関係なく、すべてのJava VM(ServletコンテナおよびEJBコンテナ)を起動します。
- Webアプリケーションのみを配備した場合
アプリケーションが配備されているJava VMを起動します。なお、HotDeploy機能を使用する場合だけ、EJBコンテナにEJBアプリケーションが配備されている/いないに関係なくJava VM(EJBコンテナ)を起動します。
- EJBアプリケーションのみを配備した場合
アプリケーションが配備されているJava VMを起動します。HotDeploy機能を使用する場合だけ、ServletコンテナにWebアプリケーションが配備されている/いないに関係なくJava VM(Servletコンテナ)を起動します。

- 配備モジュールが存在するが活性化に失敗する場合の起動状態
EJBアプリケーションの場合は、以下のとおりです。なお、Webアプリケーションの場合は、HotDeployを使用する/しないに関係なく、活性化が成功するアプリケーションだけを起動します。
- HotDeploy機能を使用する場合
すべてのEJBアプリケーションは起動しません。
- HotDeploy機能を使用しない場合
活性化が成功するEJBアプリケーションだけを起動します。
HotDeploy機能を使用する場合と使用しない場合について、以下の表に示します。
【EAR間で分離する/すべて分離する】
配備モジュールが存在しない場合は、IJServerの起動は行いません。
配備モジュールが存在する場合は、以下の表に従いIJServerの起動を行います。
|
|
HotDeploy機能を使用しない場合 |
HotDeploy機能を使用する場合 |
|
配備されているモジュールの状態/配備されているモジュールの種別 |
一部またはすべてのモジュールが活性不可能 |
すべてのモジュールが活性可能 |
一部またはすべてのモジュールが活性不可能 |
すべてのモジュールが活性可能 |
|
war |
起動します |
起動します |
|
ejb-jar |
起動しません |
起動します |
|
ear |
warのみ |
起動しません |
|
ejb-jarのみ |
起動しません |
起動します |
|
warおよびejb-jar |
含まれるejb-jarがすべて活性可能なモジュールの場合は起動します |
起動します |

HotDeploy機能を使用しない場合、EJBアプリケーションの活性化に失敗するとIJServerは起動しません。
新規配備/再配備/配備解除/再活性は、Interstage管理コンソールを使用して実行してください。
- 新規配備(新規モジュールの配備)
配備を実行すると、運用環境へのモジュールの配備と、配備モジュールの活性化を実行します。
Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [配備]で、配備対象のモジュールを「参照」ボタンから選択してください。
- 再配備(既存配備モジュールの再配備)
配備を実行すると、配備モジュールの非活性化(注1)、モジュールの配備、配備モジュールの活性化を実行します。
Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [配備]で、再配備するモジュールを「参照」ボタンから選択してください。
- 配備解除
配備解除を実行すると、配備モジュールの非活性化(注1)、モジュールの配備解除を実行します。
Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [アプリケーション状態/配備解除]タブから[チェックボックス]で選択されている配備モジュールを配備解除します。
- 再活性(注2)
Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [アプリケーション状態/配備解除]タブから配備モジュールを選択して再活性ボタンを押すと、配備モジュールの非活性化、配備モジュールの活性化を実行して、定義ファイルの再読み込みとすでに読み込まれたクラスファイルの破棄を行います。
なお、再活性を行う場合、以下の設定が反映されます。
【Webアプリケーションの場合】
− モジュールの環境設定画面の設定
− モジュールの名前変換画面の設定
【EJBアプリケーションの場合】
− モジュールの環境設定画面の設定
− モジュールの名前変換画面の設定
− アプリケーションのアプリケーション環境定義画面の設定
- 注1)
- 配備モジュールの非活性化では、以下を実行します。
- 新しいリクエストの受付けを停止
- 非活性化処理が開始される前に受け付けたリクエストの処理が終了するまで待機
- モジュールの非活性化
- 配備モジュールの非活性化では、新しいリクエストの受付けを停止して、処理中のリクエストの処理が終了するまで待機します。(※)1分間待機してもリクエストの処理が終了しない場合、配備モジュールが“非活性化処理中”のままエラーが発生します。この場合、リクエストの処理を終了するまで(状態が“非活性”となるまで)待ってから再度配備を実行するか、または、IJServerを再起動してください。
“非活性”状態となったモジュールについては、再活性することにより活性化することができます。異常状態となったモジュールについては、異常が発生した原因を取り除いてモジュールを再活性することで、運用可能な状態となります。
配備モジュールの状態については“配備モジュールの状態”を、また再活性の方法については“再活性”を参照してください。
- ※) Session Beanの非活性化を行う場合、クライアントまたは別モジュールからの以下のリクエストは、Session Beanにとってそれぞれ別のリクエストになります。
- Session Beanのcreate
- ビジネスメソッド呼び出し
- Session Beanのremove
そのためビジネスメソッド処理中に非活性化された場合、ビジネスメソッドが復帰すると非活性化が行われてアクセスはできなくなります。ビジネスメソッド呼出し後にSession Beanのremoveを行っている場合、ビジネスメソッドは正常に復帰してもremoveでエラーになります。
- 注2)
- 再活性は、以下の場合に使用してください。
- 異常状態のモジュールに対して異常原因を取り除いた後に配備モジュールを活性化する場合
- IJServerを停止せずに特定のモジュールのチューニングパラメタやその他の動作モードを変更する場合
- IJServerを停止せずに特定のモジュールのキャッシュをクリアしたい場合
例えばインスタンス管理モードがReadOnlyのEntity Beanインスタンスのキャッシュをクリアする場合(非活性化されるとアプリケーションが一度初期化されるため、アプリケーションやコンテナが保持している情報はクリアされます。)
なお、新規配備または再配備、配備解除、再活性の実行に失敗した場合については、“トラブルシューティング集”の“HotDeploy機能使用時の異常”を参照してください。
各モジュールの状態はInterstage管理コンソールから確認できます。Interstage管理コンソールには以下のように表示されます。
|
状態 |
説明 |
対処 |
|
活性 |
配備モジュールがリクエストを受付けることができます。 |
− |
|
非活性 |
配備モジュールがリクエストを受付けることができません。 |
コンテナログを参照し、非活性状態となっている原因を取り除き、再活性処理を行ってください。 |
|
活性(一部) |
配備モジュールがリクエストを受付けることができますが、IJServerの一部のプロセスでモジュールが非活性状態となっています。 |
コンテナログを参照し、非活性状態となっている原因を取り除き、再活性処理を行ってください。 |
|
活性(不整合) |
配備モジュールがリクエストを受付けることができますが、各プロセスで活性化されているモジュールの整合性が合っていません。
(配備中にIJServerの一部プロセスを再起動したため、あるプロセスが再配備前のモジュールをロードしています。)
活性(一部)と活性(不整合)が混在している状態もこの状態となります。 |
− |
|
活性化処理中 |
配備モジュールがリクエストの受付けを開始しようとしています。 |
− |
|
非活性化処理中 |
配備モジュールがリクエストの受け付けを停止しようとしています。 |
状態が変わらないときは、メモリ不足が発生して処理が中断された場合があります。IJServerを停止し、再度起動を実行してください。 |
|
異常 |
配備、配備解除、再活性中にIJServerの一部プロセスが再起動されたため、以下の異常が発生しています。
- 活性化処理中のプロセスと非活性化処理中のプロセスが混在しています。
|
IJServerを停止し、再度起動を実行してください。 |
新規配備または再配備、配備解除、再活性を実行した場合、配備されたモジュールが非活性化、および活性化されますが、この場合配備するモジュールのクラスを参照するすべてのモジュールも非活性化および、活性化されます。
配備モジュールの参照関係はクラスローダの分離方法(EAR間で分離、すべて分離、分離しない)により異なります。
クラスローダの分離方法ごとの非活性化および、活性化する配備モジュールは、以下のように異なります。クラスローダの分離については、“クラスローダの分離”を参照してください。
|
クラスローダの設定 |
配備するモジュール |
|
EAR |
WAR |
ejb-jar |
RAR |
|
EAR間で分離 |
対象のEARのみ |
対象のWARのみ |
配備されているすべてのejb-jarまたはWAR、RAR |
配備されているすべてのejb-jarまたはWAR、RAR |
|
すべて分離 |
対象のEARのみ |
対象のWARのみ |
対象のejb-jarのみ |
対象のRARのみ |
|
分離しない |
−※ |
−※ |
−※ |
−※ |
※)HotDeploy機能は使用できません。
以下にクラスローダの分離形態による非活性化、および活性化について説明します。
図中の非活性化の単位で示す範囲で非活性化し、活性化の単位で示す範囲で活性化します。なお、モジュールの活性化に失敗した場合、失敗したモジュールを除いて他のモジュールについては活性化を継続します。
- EAR間で分離の場合
EAR間で分離の場合、ejb-jarやRARのクラスは別のejb-jarまたはRAR、WARから参照することができるためejb-jarやRARを配備すると、配備されているすべてのejb-jarおよびRAR、WARが非活性化および活性化されます。なお、EARやWARを配備すると配備モジュールは個々に非活性化および活性化されます。
- すべて分離の場合
すべて分離の場合、モジュールは個別に非活性化と活性化されます。

Sharedディレクトリには以下の2種類があり、再活性の動作が異なります。
- IJServerディレクトリ配下のSharedディレクトリ
IJServer内で共通に使用するクラスを設定するディレクトリです。本ディレクトリ内のクラスまたはjarファイルは再活性の対象外のため、置き換えた場合にはIJServerを再起動するまで反映されません。
- EARに含まれるSharedディレクトリ
EAR内のアプリケーション間で共通に使用するクラスを設定するディレクトリです。本ディレクトリ内のクラスまたはjarファイルは再活性の対象です。
◆J2EEのHotDeploy機能の注意事項
- Interstage管理コンソールのシステム、リソースおよびIJServerで指定した定義の変更は反映の対象となりません。
- 再活性した場合、ServletのセションとSTATEFUL Session Beanのインスタンスは破棄されますので、再作成してください。
- JNIを使用するクラスを含むアプリケーションを再活性または、再配備した場合、nativeモジュールのロードに失敗し、java.lang.UnsatisfiedLinkErrorがスローされる可能性があります。この場合はIJServerを再起動する必要があります。JNIを使用するアプリケーションに対してHotDeployを行う場合は、“クラスローダ使用時の注意事項”の“J2EEアプリケーションでJNIを使用する場合の注意事項”を参照して対処を行ってください。
クラスのオートリロード機能とは、IJServerを停止せずに配備済みのアプリケーションのクラスを入れ替えることができる機能です。
ただし、jarファイルを新規に追加した場合はクラスのオートリロードは動作しません。したがって、追加したjarファイルはモジュールの再活性またはIJServerを再起動するまでロードされません。
クラスのオートリロードを行う場合の設定は、Interstage管理コンソール > ワークユニット > 配備で、クラスのオートリロード機能を“使用する”を選択します。
クラスのオートリロード機能を使用した場合、修正したアプリケーションのファイルを置き換えるだけで自動的にロードされるため、アプリケーションを配備し直す必要がなく、またIJServerの停止と起動の必要もないため、効率よく開発できます。
アプリケーションの開発を行う場合は、クラスのオートリロード機能を行うことを推奨します。
IJServerが起動している状態でオートリロードの設定を変更した場合、以下のいずれかの操作で変更したクラスがロードされます。なお、変更の対象以外のモジュールに対するリクエストは影響なく処理できます。
◆設計方法
配備モジュールのクラスファイルを頻繁に変更して動作確認する開発作業中は、クラスのオートリロード機能を使用することで開発効率を向上させることが可能です。ただし、クラスのオートリロード機能はコンテナがクラスファイルの変更を絶えず監視するため、処理性能が劣化します。このため、アプリケーションの開発時のみ使用してください。
また、以下のクラスについては入れ替えることができません。以下のクラスを入れ替える場合にはHotDeploy機能を使用してください。HotDeploy機能については“J2EEのHotDeploy機能”を参照してください。
【クラスのオートリロード機能で入れ替えることができないクラス】
EJBのインタフェース(Remoteインタフェース/Homeインタフェース/Localインタフェース/LocalHomeインタフェース)
◆運用方法
クラスのオートリロード機能ではクラスを定期的に監視するため、Interstage管理コンソールから監視時間間隔を定義する必要があります。Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定]タブから配備モジュールに対する設定を行ってください。詳細はInterstage管理コンソールのヘルプを参照してください。
実際に入れ替えを行いたいクラスファイルは、配備ディレクトリに直接コピーしてください。
クラスのオートリロード機能の対象は以下のディレクトリに含まれるクラスです。コピー先(配備ディレクトリ)の詳細については、“IJServerのファイル構成”を参照してください。

- 【WARファイルを配備した場合】
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[Webモジュール名]\WEB-INF\lib配下の拡張子が“.jar”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[Webモジュール名]\WEB-INF\classes配下の拡張子が“.class”のファイル
- 【ejb-jarファイルを配備した場合】
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EJBモジュール名]配下の拡張子が“.class”のファイル
- 【EARファイルを配備した場合】
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名]\[WARのファイル名]\WEB-INF\lib配下の拡張子が“.jar”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名]\[WARのファイル名]\WEB-INF\classes配下の拡張子が“.class”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名]\[ejb-jarのファイル名]配下の拡張子が“.class”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名]\[RARのファイル名]配下の拡張子が“.jar”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名]\Shared\lib配下の拡張子が“.jar”のファイル
- [J2EE共通ディレクトリ]\ijserver\[IJServer名]\apps\[EARモジュール名] \Shared\classes配下の拡張子が“.class”のファイル

- 【WARファイルを配備した場合】
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[Webモジュール名]/WEB-INF/lib配下の拡張子が“.jar”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[Webモジュール名]/WEB-INF/classes配下の拡張子が“.class”のファイル
- 【ejb-jarファイルを配備した場合】
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EJBモジュール名]配下の拡張子が“.class”のファイル
- 【EARファイルを配備した場合】
- opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名]/[WARのファイル名]/WEB-INF/lib配下の拡張子が“.jar”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名]/[WARのファイル名]/WEB-INF/classes配下の拡張子が“.class”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名]/[ejb-jarのファイル名]配下の拡張子が“.class”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名]/[RARのファイル名]配下の拡張子が“.jar”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名]/Shared/lib配下の拡張子が“.jar”のファイル
- /opt/FJSVj2ee/var/deployment/ijserver/[IJServer名]/apps/[EARモジュール名] /Shared/classes配下の拡張子が“.class”のファイル
クラスファイルを入れ替えた場合、そのクラスを参照できるモジュールのクラスがすべてオートリロードされます。クラスファイルを参照できるモジュールは、クラスローダの設定により異なります。以下にオートリロードされるモジュールのクラスを示します。
【オートリロードされるクラス】
|
クラスローダの設定 |
入れ替えるクラス |
|
個別に配備されたWARのクラス |
EARに含まれるWARのクラス |
個別に配備されたejb-jarのクラス |
EARに含まれるejb-jarのクラス |
EARに含まれるSharedディレクトリ配下のクラス |
個別に配備されたRARのクラス |
EARに含まれるRARのクラス |
|
EAR間で分離 |
入れ替えたWARのクラスのみ |
入れ替えたWARのクラスのみ |
個別に配備されたejb-jarまたはRAR、WARのクラスすべて |
EARに含まれるモジュールのクラスすべて |
EARに含まれるモジュールのクラスすべて |
−※2 |
EARに含まれるモジュールのクラスすべて |
|
すべて分離 |
入れ替えたWARのクラスのみ |
入れ替えたWARのクラスのみ |
入れ替えたejb-jarのクラスのみ |
EARに含まれるモジュールのクラスすべて |
EARに含まれるモジュールのクラスすべて |
−※2 |
EARに含まれるモジュールのクラスすべて |
|
分離しない |
入れ替えたWARのクラスのみ |
※1 |
※1 |
※1 |
※1 |
※1 |
※1 |
※1)クラスローダを分離しないため、WAR間以外は配備したモジュール同士がすべて参照できるため、クラスのオートリロードは動作しません。
※2)単体で配備されたRARはオートリロードの対象となりません。このため、クラスのオートリロードは動作しません。
◆Sharedディレクトリ
Sharedディレクトリには以下の2種類があり、クラスのオートリロードの動作が異なります。
- IJServerディレクトリ配下のSharedディレクトリ
IJServer内で共通に使用するクラスを設定するディレクトリです。
本ディレクトリ内のクラスまたはjarファイルはオートリロードの対象外のため、置き換えた場合にはIJServerを再起動するまで反映されません。
- EARに含まれるSharedディレクトリ
EAR内のアプリケーション間で共通に使用するクラスを設定するディレクトリです。
本ディレクトリ内のクラスまたはjarファイルはオートリロードの対象です。
◆クラスのオートリロードの注意事項

- ファイルをコピーする場合、ファイルのアクセス権はコピー前と同様に設定してください。アクセス権に不当な設定をした場合、アプリケーションの実行に失敗または配備失敗、配備解除失敗などが発生する可能性があります。
■WebアプリケーションとEJBアプリケーションのカスタマイズ
Interstage管理コンソールを使用して、WebアプリケーションとEJBアプリケーションをカスタマイズします。
Interstage管理コンソールの[ワークユニット] > “ワークユニット名”のカスタマイズしたいアプリケーションをクリックしてください。
各定義の詳細については、Interstage管理コンソールのヘルプを参照してください。
■クライアントの設定
J2EEアプリケーションクライアントやアプレットからEJBを参照する場合には、別途EJBクライアントの環境設定が必要となります。詳細については“EJBを参照する場合の環境設定”を参照してください。
■HTTPトンネリング
J2EEでHTTPトンネリングを使用する場合は、“セキュリティシステム運用ガイド”の“J2EEのHTTPトンネリング”を参照してください。
All Rights Reserved, Copyright(C) 富士通株式会社 2005