-lstファイル
Mayaの環境には、.lstという拡張子を持つファイル群が配置されます。これは、エンジンの挙動をカスタマイズするためのファイル群です。このファイルは、CompositeSourceDescriptorによって読み込まれます。CompositeSourceDescriptorは、以下の具体的なディスクリプタを保持します。
- ServletSourceDescriptor: コンテキスト相対パスにてファイル取得
- ClassLoaderSourceDescriptor: Javaクラスローダーによってファイル取得
- JarEntrySourceDescriptor: JARのMETA-INFエントリ相対パスでファイル取得
Mayaのディストロでは、maya-standard-*.jarのMETA-INF/WEB-INF/エントリに組み込みのlstファイルを配置しておきます。Maya利用の際に、この設定項目をカスタマイズしたい際には、以下の場所におくことになります。
- /context/WEB-INFの下
- クラスパス中の、「WEB-INF」パッケージ中
- maya-standard-*.jarより先に読み込まれるJAR(名前のアルファベット順が先)のMETA-INF/WEB-INF/
また、lstファイルは以下の種類がいまのところあります。
- error.lst: エラーハンドラのリスト
- expression.lst: ExpressionResolverのリスト
- injection.lst: InjectionResolverのリスト
- processor.lst: ProcessorResolverのリスト
- tldignore.lst: JARからTLDを検索する際の、スキップJARファイルリスト
この方法の利点は、上記のリゾルバ群の追加を行いたいときには、これまではServiceProviderの実装クラスをオーバーライドする必要があったのですが、これでテキストファイルに追加するだけになったということが挙げられます。
tldignore.lstは前からあったので、既存を修正して、新しいリソース読み込みの機構で動いています>sugaさん。あとはレゾルバへの組み込みと、Build.xmlの調整です。
「WEB-INFパッケージ」はちょっと奇異ですが、この理由はSourceDescriptorが、ルートパス+ファイルパスという指定方法でソースの場所を特定することにあります。/WEB-INFフォルダの下においてServletSourceDescriptorにて読み込ませる指定が、ルート=WEB-INF、ファイル=tldignore.lstとなるため、もしここに無かったとき、同じルールで、ルート=JARのMETA-INF/WEB-INFエントリとします。