Loader コンポーネント

目次

序論

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

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

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

Catalina によって実装されているクラスローダー階層の詳細については、ClassLoader のハウツーを参照してください。

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

属性

共通属性

Loader のすべての実装では、以下の属性がサポートされています

属性説明
className

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

delegate

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 要素内には、コンポーネントをネストできません。

特別な機能

ロギング

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