Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第1部 J2EE共通編> 第3章 J2EEアプリケーションの運用

3.2 J2EEアプリケーションの配備と設定

■J2EEアプリケーションの配備

 J2EEアプリケーションを実行環境に配備します。

J2EEのHotDeploy機能

 J2EEのHotDeploy機能を使用すると、IJServerを停止せずにモジュールの配備または再配備、配備解除が実行でき、運用中のIJServerに対してWebアプリケーションとEJBアプリケーションを追加または更新、削除できます。
 配備中、または配備解除中ではないモジュールに対してリクエスト処理を行うことができるため、アプリケーションの開発が効率的に実施でき、IJServerの連続運用も可能です。

◆HotDeploy機能を使用しない場合のアプリケーション入れ替え方法

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

◆HotDeploy機能を使用した場合のアプリケーション入れ替え方法

 HotDeploy機能について、以下の順で説明します。

設計方法

 開発効率の向上、および運用中の保守性の向上を目的とした機能として“HotDeploy機能”と“クラスのオートリロード機能”を提供しています。HotDeploy機能だけを使用しても十分な効果がありますが、クラスのオートリロード機能を使用することで、さらに開発効率が向上する場合があります。クラスのオートリロード機能については、“クラスのオートリロード機能”を参照してください。

運用方法

 HotDeploy機能を使用する場合は、Interstage管理コンソールの[ワークユニット] > [新規作成]タブを選択し、[詳細設定]表示後の[共通定義]より設定してください。また、ワークユニット作成後は、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定]タブを選択し[共通定義]から変更できます。

 HotDeploy機能を使用する場合は、後述の新規モジュールの配備または既存配備モジュールの再配備を効率的に行うため、HotDeploy機能を使用しない場合とIJServerの起動状態が異なる場合があります。

 以下に、配備モジュールとIJServerの起動状態の関係について説明します。

  1. 配備モジュールが存在しない場合のIJServerの起動状態
    HotDeploy機能を使用する/しないに関係なく、配備モジュールが存在しない場合はIJServerの起動に失敗します。
  2. 配備モジュールが存在する場合のIJServerの起動状態
    IJServerタイプが“WebアプリケーションとEJBアプリケーションを別JavaVMで運用”の場合は、以下のとおりです。
    それ以外のIJServerタイプは、下図に示すHotDeploy機能を使用しない場合と同様です。
    1. WebアプリケーションおよびEJBアプリケーションを配備した場合
      HotDeploy機能の使用する/しないに関係なく、すべてのJava VM(ServletコンテナおよびEJBコンテナ)を起動します。
    2. Webアプリケーションのみを配備した場合
      アプリケーションが配備されているJava VMを起動します。なお、HotDeploy機能を使用する場合だけ、EJBコンテナにEJBアプリケーションが配備されている/いないに関係なくJava VM(EJBコンテナ)を起動します。
    3. EJBアプリケーションのみを配備した場合
      アプリケーションが配備されているJava VMを起動します。HotDeploy機能を使用する場合だけ、ServletコンテナにWebアプリケーションが配備されている/いないに関係なくJava VM(Servletコンテナ)を起動します。
  3. 配備モジュールが存在するが活性化に失敗する場合の起動状態
    EJBアプリケーションの場合は、以下のとおりです。なお、Webアプリケーションの場合は、HotDeployを使用する/しないに関係なく、活性化が成功するアプリケーションだけを起動します。

     HotDeploy機能を使用する場合と使用しない場合について、以下の表に示します。

    【EAR間で分離する/すべて分離する】
     配備モジュールが存在しない場合は、IJServerの起動は行いません。
     配備モジュールが存在する場合は、以下の表に従いIJServerの起動を行います。

     

    HotDeploy機能を使用しない場合

    HotDeploy機能を使用する場合

    配備されているモジュールの状態/配備されているモジュールの種別

    一部またはすべてのモジュールが活性不可能

    すべてのモジュールが活性可能

    一部またはすべてのモジュールが活性不可能

    すべてのモジュールが活性可能

    war

    起動します

    起動します

    ejb-jar

    起動しません

    起動します

    ear

    warのみ

    起動しません

    ejb-jarのみ

    起動しません

    起動します

    warおよびejb-jar

    含まれるejb-jarがすべて活性可能なモジュールの場合は起動します

    起動します


    HotDeploy機能を使用しない場合、EJBアプリケーションの活性化に失敗するとIJServerは起動しません。

 新規配備/再配備/配備解除/再活性は、Interstage管理コンソールを使用して実行してください。

  1. 新規配備(新規モジュールの配備)
    配備を実行すると、運用環境へのモジュールの配備と、配備モジュールの活性化を実行します。
     Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [配備]で、配備対象のモジュールを「参照」ボタンから選択してください。
  2. 再配備(既存配備モジュールの再配備)
    配備を実行すると、配備モジュールの非活性化(注1)、モジュールの配備、配備モジュールの活性化を実行します。
     Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [配備]で、再配備するモジュールを「参照」ボタンから選択してください。
  3. 配備解除
    配備解除を実行すると、配備モジュールの非活性化(注1)、モジュールの配備解除を実行します。
     Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [アプリケーション状態/配備解除]タブから[チェックボックス]で選択されている配備モジュールを配備解除します。
  4. 再活性(注2)
    Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [アプリケーション状態/配備解除]タブから配備モジュールを選択して再活性ボタンを押すと、配備モジュールの非活性化、配備モジュールの活性化を実行して、定義ファイルの再読み込みとすでに読み込まれたクラスファイルの破棄を行います。
     なお、再活性を行う場合、以下の設定が反映されます。
      【Webアプリケーションの場合】
       − モジュールの環境設定画面の設定
       − モジュールの名前変換画面の設定
      【EJBアプリケーションの場合】
       − モジュールの環境設定画面の設定
       − モジュールの名前変換画面の設定
       − アプリケーションのアプリケーション環境定義画面の設定
注1)
 配備モジュールの非活性化では、以下を実行します。
  1. 新しいリクエストの受付けを停止
  2. 非活性化処理が開始される前に受け付けたリクエストの処理が終了するまで待機
  3. モジュールの非活性化
 配備モジュールの非活性化では、新しいリクエストの受付けを停止して、処理中のリクエストの処理が終了するまで待機します。(※)1分間待機してもリクエストの処理が終了しない場合、配備モジュールが“非活性化処理中”のままエラーが発生します。この場合、リクエストの処理を終了するまで(状態が“非活性”となるまで)待ってから再度配備を実行するか、または、IJServerを再起動してください。
 “非活性”状態となったモジュールについては、再活性することにより活性化することができます。異常状態となったモジュールについては、異常が発生した原因を取り除いてモジュールを再活性することで、運用可能な状態となります。
 配備モジュールの状態については“配備モジュールの状態”を、また再活性の方法については“再活性”を参照してください。
※) Session Beanの非活性化を行う場合、クライアントまたは別モジュールからの以下のリクエストは、Session Beanにとってそれぞれ別のリクエストになります。
  - Session Beanのcreate
  - ビジネスメソッド呼び出し
  - Session Beanのremove
そのためビジネスメソッド処理中に非活性化された場合、ビジネスメソッドが復帰すると非活性化が行われてアクセスはできなくなります。ビジネスメソッド呼出し後にSession Beanのremoveを行っている場合、ビジネスメソッドは正常に復帰してもremoveでエラーになります。
注2)
再活性は、以下の場合に使用してください。

 なお、新規配備または再配備、配備解除、再活性の実行に失敗した場合については、“トラブルシューティング集”の“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機能は使用できません。

 以下にクラスローダの分離形態による非活性化、および活性化について説明します。
 図中の非活性化の単位で示す範囲で非活性化し、活性化の単位で示す範囲で活性化します。なお、モジュールの活性化に失敗した場合、失敗したモジュールを除いて他のモジュールについては活性化を継続します。

Sharedディレクトリ

 Sharedディレクトリには以下の2種類があり、再活性の動作が異なります。

◆J2EEのHotDeploy機能の注意事項

クラスのオートリロード機能

 クラスのオートリロード機能とは、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種類があり、クラスのオートリロードの動作が異なります。

◆クラスのオートリロードの注意事項

■WebアプリケーションとEJBアプリケーションのカスタマイズ

 Interstage管理コンソールを使用して、WebアプリケーションとEJBアプリケーションをカスタマイズします。
 Interstage管理コンソールの[ワークユニット] > “ワークユニット名”のカスタマイズしたいアプリケーションをクリックしてください。
 各定義の詳細については、Interstage管理コンソールのヘルプを参照してください。

■クライアントの設定

 J2EEアプリケーションクライアントやアプレットからEJBを参照する場合には、別途EJBクライアントの環境設定が必要となります。詳細については“EJBを参照する場合の環境設定”を参照してください。

■HTTPトンネリング

 J2EEでHTTPトンネリングを使用する場合は、“セキュリティシステム運用ガイド”の“J2EEのHTTPトンネリング”を参照してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005