Jar スキャナーコンポーネント

目次

はじめに

Jar スキャナー要素は、WebアプリケーションをJARファイルおよびクラスファイルのディレクトリについてスキャンするために使用されるコンポーネントを表します。通常、Webアプリケーションの初期化の一部として処理する必要があるTLDやweb-fragment.xmlファイルなどの設定ファイルを特定するために、Webアプリケーションの起動中に使用されます。

Jar スキャナー要素は、Contextコンポーネント内にネストされることがあります。

例えば、JARファイルをスキャンする際にブートストラップクラスパスを含めることができます。

<Context>
  ...
  <JarScanner scanBootstrapClassPath="true"/>
  ...
</Context>

Jar スキャナー要素が含まれていない場合、デフォルトのJar スキャナー設定が自動的に作成され、ほとんどの要件にはこれで十分です。

属性

共通属性

Jar スキャナーのすべての実装は、以下の属性をサポートしています。

属性説明
className

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

標準実装

Jar スキャナーの標準実装はorg.apache.tomcat.util.scan.StandardJarScannerです。これは(上記の共通属性に加えて)以下の追加属性をサポートしています。

属性説明
scanAllDirectories

trueの場合、クラスパスで見つかったすべてのディレクトリが展開されたJARファイルであるかどうかがチェックされます。デフォルトはfalseです。

Tomcatは、META-INFサブディレクトリを探すことで、ディレクトリが展開されたJARファイルであるかどうかを判断します。META-INFサブディレクトリが存在する場合にのみ、そのディレクトリは展開されたJARファイルであるとみなされます。なお、@HandlesTypesアノテーションとの一致をスキャンする場合、META-INFサブディレクトリの有無にかかわらず、すべてのディレクトリがスキャンされます。

scanAllFiles

trueの場合、ファイル拡張子が.jarであることに依存するのではなく、クラスパスで見つかったすべてのファイルがJarファイルであるかどうかがチェックされます。デフォルトはfalseです。

scanClassPath

trueの場合、Webアプリケーションに加えて、共有および共通のクラスローダーとシステムクラスパス(ただしブートストラップクラスパスは除く)を含むWebアプリケーションの完全なクラスパスがJarファイルについてスキャンされます。デフォルトはtrueです。

scanBootstrapClassPath

scanClassPathtrueで、かつこれがtrueの場合、ブートストラップクラスパスもJarファイルについてスキャンされます。デフォルトはfalseです。

scanManifest

trueの場合、見つかったJARのManifestファイルが追加のクラスパスエントリについてスキャンされ、それらのエントリがスキャン対象のURLに追加されます。デフォルトはtrueです。

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

Jar スキャナー要素内にネストできるのは、Jar スキャンフィルターのみです。

特殊機能

Jar スキャナー要素には特別な機能は関連付けられていません。