Loader コンポーネント

目次

はじめに

Loader要素は、Webアプリケーション用のJavaクラスとリソースをロードするために使用されるWebアプリケーションクラスローダーを表します。このようなクラスローダーは、サーブレット仕様の要件に従い、以下の場所からクラスをロードする必要があります。

  • Webアプリケーション内の/WEB-INF/classesディレクトリから。
  • Webアプリケーション内の/WEB-INF/libディレクトリにあるJARファイルから。
  • CatalinaによってすべてのWebアプリケーションにグローバルに利用可能にされたリソースから。

Loader要素は、Contextコンポーネント内にネストされることがあります。含まれていない場合、デフォルトのLoader設定が自動的に作成され、ほとんどの要件には十分です。

Catalinaによって実装されるクラスローダーの階層に関するより詳細な説明は、ClassLoader HowToを参照してください。

以下の説明では、$CATALINA_BASEという変数名を使用して、ほとんどの相対パスが解決される基準ディレクトリを指します。CATALINA_BASEディレクトリを設定して複数のインスタンス用にTomcatを構成していない場合、$CATALINA_BASEはTomcatをインストールしたディレクトリである$CATALINA_HOMEの値に設定されます。

属性

共通属性

Loaderのすべての実装は、以下の属性をサポートしています。

属性説明
className

使用する実装のJavaクラス名。このクラスはorg.apache.catalina.Loaderインターフェースを実装している必要があります。指定しない場合、標準値(以下で定義)が使用されます。

delegate

クラスローダーが標準のJava2委譲モデルに従い、Webアプリケーション内を探す前に親クラスローダーからクラスをロードしようとする場合は、trueに設定します。クラスローダーが要求されたクラスやリソースを親クラスローダーに問い合わせる前に、まずWebアプリケーション内を探すようにする場合は、false(デフォルト)に設定します。

標準実装

Loaderの標準実装はorg.apache.catalina.loader.WebappLoaderです。これは、上記の共通属性に加えて、以下の追加属性をサポートしています。

属性説明
loaderClass

使用するjava.lang.ClassLoader実装クラスのJavaクラス名。カスタム実装はorg.apache.catalina.loader.WebappClassLoaderBaseを拡張する必要があります。

指定しない場合、デフォルト値はorg.apache.catalina.loader.ParallelWebappClassLoaderです。デフォルトのloaderClassは並列処理が可能であり、これは複数のスレッドが異なるクラスを並列にロードできることを意味します。並列処理に対応していないloaderClassも利用可能で、org.apache.catalina.loader.WebappClassLoaderを指定することで使用できます。

ネストされたコンポーネント

Loader要素内にネストできるコンポーネントはありません。

特殊機能

ロギング

ローダーは、そのクラス名に基づいてログカテゴリに関連付けられます。