本製品のデフォルト設定では、Webクラスローダは親のクラスローダにクラスの検索を委譲します。この場合には、EARファイルで配備するとWebモジュール内のクラスは、Applicationクラスローダでロードされます。
また、Webクラスローダが親クラスローダより先にクラスの検索を行うように設定することもできます。
注意
Webクラスローダの委譲モデルを親クラスローダへの委譲を後に設定しても、WARファイルのマニフェストクラスパスに指定したクラスがApplicationクラスローダでロードされます。
WARファイルのマニフェストクラスパスに指定したクラスを、WEB-INF/classesまたはWEB-INF/lib配下に保管してください。
Webクラスローダで検索する前に親クラスローダに委譲します。WebアプリケーションがEJBコンポーネントにアクセスする場合、またはWebアプリケーションがWebサービスクライアントやエンドポイントである場合は、この設定にする必要があります。
親クラスローダで検索する前にWebクラスローダで検索します。Webモジュールが他のモジュールとの連携を行わない場合にだけ設定することをお勧めします。
設定方法
sun-web.xmlのclass-loader要素のdelegate属性で設定します。
設定値 | 意味 |
---|---|
true(デフォルト値) | 親クラスローダへの委譲を先に行います。 |
false | 親クラスローダへの委譲を後に行います。 |
sun-web.xmlの設定方法は、「4.2.3.2 Interstage Web application deployment descriptor (sun-web.xml)」を参照してください。
委譲の例外
Webクラスローダの委譲については、以下の2つの例外があります。
JDKのクラスは常に最初にロードされますので、このクラスはユーザが置き換えることはできません。
以下のパッケージ名で始まるクラスは常に最初に親クラスローダにロードが委譲されます。
親クラスローダに以下のパッケージ名で始まるクラスが存在する場合は、子クラスローダでクラスを置き換えることはできません。
パッケージ名 | 種類 |
---|---|
javax | Java extensions |
sun | GFコアアプリケーションサーバクラス |
org.xml.sax | SAX 1 & 2 |
org.w3c.dom | DOM 1 & 2 |
org.apache.taglibs.standard | taglibs |
com.sun.faces | faces |
org.apache.commons.logging | commons logging |