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

第1部 J2EE共通編> 第2章 J2EEアプリケーションの設計

2.3 クラスローダ

 Javaのクラスローダはクラスファイルを検索し、クラスをメモリにロードする機能を提供します。
 J2EEアプリケーションを作成する際は、クラスがどのクラスローダでロードされるかを理解してJ2EEアプリケーションを構築してください。

■クラスローダの階層

 Javaのクラスローダは親クラスローダと子クラスローダからなる階層構造をもっています。親クラスローダと子クラスローダの関係はオブジェクトのスーパークラスとサブクラスの関係に似ています。
 子クラスローダでロードされたクラスから親クラスローダでロードされたクラスを参照することはできますが、親クラスローダでロードされたクラスから子クラスローダでロードされたクラスを参照することはできません。

 JNI(Java Native Interface)を利用している場合はさらに注意が必要です。JNIを利用する場合はNativeモジュールをクラスローダがロードしますが、Javaのクラスローダでは同じNativeモジュールは同じクラスローダ上からのみ利用可能となります。

 (1)と(2)で同じNativeモジュールを使用していますが、先にNativeモジュールを読み込んだ側からのみ利用可能となります。
 クラスBが先に動作した場合はクラスAには“java.lang.UnsatisfiedLinkError”がスローされます。
 上記は、Interstageの場合にも当てはまります。

■クラスのロード

 一般的には、クラスローダは委譲モデルを使ってクラスをロードします。クラスローダは関連する親クラスローダを持ち、クラスをロードするために呼び出されると、クラスローダはそれ自体でクラスのロードを試みる前に、該当クラスのロードを親クラスローダに委譲します。
 Interstageが利用するクラスとアプリケーションが利用するクラスの独立性を高めるために、Interstageのクラスローダはこの委譲モデルとは少し違う動作をします。Interstageのクラスローダの検索順番については以降で説明します。


下へ2.3.1 クラスローダの構成
下へ2.3.2 クラスローダの分離
下へ2.3.3 クラスローダの検索順番の変更
下へ2.3.4 IJServerで使用するクラスの設定について
下へ2.3.5 XMLパーサの設定
下へ2.3.6 トレース機能によるトラブル調査
下へ2.3.7 クラスローダ使用時の注意事項

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

Copyright 2008 FUJITSU LIMITED