サーブレット3では、WebフラグメントはWARのWEB-INF/libsの下にデプロイされたjarです。Webフラグメントのリソースは、WARのリソースであるため、マージされて取引されます。しかし、それはすべての状況に適しているわけではありません。
たとえば、web-fragmentのWEB-INFディレクトリの下にあるリソースを取得したい場合、それらを直接読み取ることはできません。これは、jarまたはwarにあるかどうかに関係なく、WEB-INFの下のリソースにURLでアクセスできないためです。さらに悪いことに、ServletContextを使用してこのようなリソースを読み取る一般的な方法は、実際のディレクトリ構造ではなくjarであるため、Webフラグメントでは機能しません。
最後に、ClassLoaderでそれらを読み取るための解決策を見つけました。とにかく、正確なリソース名が必要です。WEB-INF/myconfig/ディレクトリの下にあるすべてのxmlファイルを指定するようなことはできません。すべてのWebをスキャンするのが唯一の方法だと思います。 -fragement jars、メモリ内にディレクトリ構造を構築します。ただし、すべてのWebフラグメントのjar名を取得する方法はまだわかりません。それらを取得できない場合は、WEB-INF/libsの下にあるすべてのjarをスキャンする必要があります。より良い解決策はありますか?
ありがとう