Interstageのデフォルトの設定では、Applicationクラスローダ、Webappクラスローダの順番でクラスが検索されます。
クラスローダの検索順番を“親が後”に設定することでWebappクラスローダ、Applicationクラスローダの順番でクラスを検索することもできます。クラスローダの検索順番を“親が後”に設定する利点としては、たとえば同一アプリケーション内に同一クラス名を持つクラスがあった場合、クラスローダの検索順番を“親が後”に設定することにより、クラスローダは親のクラスローダにロードされるクラスをオーバーライドし、独自バージョンのクラスを持つことができます。
クラスローダの分離を“分離しない”とした場合は、クラスローダはWebappクラスローダ、システムクラスローダの2つだけが存在し、システムクラスローダは常に最初に検索されるため、クラスローダの検索順番は設定不要です。
設定方法
クラスローダの検索順番は、Interstage管理コンソールを使用して、以下のどちらかの方法で設定します。
[ワークユニット] > [新規作成] > [詳細設定] > [共通定義] > [クラスローダの検索順序]
[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [詳細設定] > [共通定義] > [クラスローダの検索順序]
また、isj2eeadminコマンドで設定することも可能です。詳細は、“リファレンスマニュアル(コマンド編)”を参照してください。
設定値によりクラスローダの検索順番は下表のようになります。
設定値 | 検索順番 |
---|---|
親が先 (デフォルト値) | システムクラスローダ |
親が後 | システムクラスローダ |
優先度の例外
クラスローダの優先度については以下の2つの例外があります。
JDKのクラス
JDKのクラスは常に最初にロードされますので、このクラスはユーザが置き換えることはできません。
特定パッケージ名で始まるクラス
以下のパッケージ名で始まるクラスは常に最初に親クラスローダにロードが委譲されます。
親クラスローダに以下のパッケージ名で始まるクラスが存在する場合は、子クラスローダでクラスを置き換えることはできません。
パッケージ名 | 種類 |
---|---|
javax | Java extensions |
org.xml.sax | SAX 1 & 2 |
org.w3c.dom | DOM 1 & 2 |
com.fujitsu.interstage | Interstageのクラス |
com.fujitsu.ObjectDirector | Interstageのクラス(ObjectDirector) |