Interstageのデフォルトの設定では、EAR間でクラスローダが分離されます。
クラスローダの分離はアプリケーション間の参照関係やアプリケーションの活性変更に影響があります。
ここでは、クラスローダの分離をカスタマイズする機能について説明します。
設定方法
クラスローダの分離方法は、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
[ワークユニット] > [新規作成] > [詳細設定] > [共通定義] > [クラスローダの分離]
[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [詳細設定] > [共通定義] > [クラスローダの分離]
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
想定する設定パターンは下表のようになります。
設定値 | 設定パターン |
---|---|
EAR間で分離 (デフォルト値) | EARを作成しないでejb-jarを個々に配備している場合に使用。 |
すべて分離 | EARを作成してアプリケーションを配備している場合に使用。 |
分離しない | EAR間でアプリケーションを参照している場合や、システムクラスローダでEJBアプリケーションやconnectorをロードする場合に使用。 |
注意
WebアプリケーションはWebアプリケーション間でクラスを相互に参照することはないため、設定値(“EAR間で分離”、“すべて分離”、“分離しない”)にかかわらず、すべての場合でWebアプリケーション間のクラスローダは分離されます。
IJServerのタイプが“WebアプリケーションとEJBアプリケーションを同一JavaVMで運用”の場合は、WebアプリケーションやEJBアプリケーションから他のIJServerに配備されたEJBアプリケーションを呼び出すことはできません。
クラスローダの分離パターン
“EAR間で分離”を選択した場合、EARの配備では、下図のようにEAR間でクラスローダが分離されます。
ejb-jar、WARの配備では、クラスローダは配備単位で分離されません。
この場合、J2EEアプリケーションの活性変更は点線で囲まれた単位で可能となります。
“すべて分離”を選択した場合、下図のように配備単位でクラスローダが分離されます。
この場合、J2EEアプリケーションの活性変更は点線で囲まれた単位で可能となりますが、EJBアプリケーションEJB-JAR5、EJB-JAR6の相互参照およびWebアプリケーションWAR3、WAR4からEJBアプリケーションの参照はできません。そのため、異なるアプリケーションで同じパッケージ名、クラス名のクラスを使用することができるようになります。
“分離しない”を選択した場合、下図のように、Webアプリケーション以外のクラスはすべて“システムクラスローダ”でロードされます。
この場合、J2EEアプリケーションの活性変更はWARファイルを配備したWebアプリケーションのみが対象となります(下図の点線で囲まれた個所)。
アプリケーション間の参照はEJBアプリケーションがお互いのクラスを参照することができます。また、WebアプリケーションからすべてのEJBアプリケーションのクラスを参照することができます。