概要
Webアプリケーションでjavax.servlet.ServletContextのgetResource()を実行すると、
WebコンテナはリソースファイルのURLを返却するが、Webアプリケーションに含まれるjarファイル内の
/META-INF/resources配下にリソースファイルを格納しても、目的のリソースファイルのURLが
取得できずにnullが返却されます。
影響のある製品
- WebOTX Application Server Express V10.1
- WebOTX Application Server Standard V10.1
詳細
以下の条件を全て満たす場合に発生します。
- Webアプリケーション内の/WEB-INF/libにjarファイルがあり、さらにそのjarファイル内の/META-INF/resources配下にリソースファイルを格納
- javax.servlet.ServletContext#getResource()で上記jarファイル内のリソースファイルのURLを取得
リソースファイルのURLを取得するため、Webアプリケーションでjavax.servlet.ServletContextのgetResource()を実行すると、WebコンテナはまずWebアプリケーション配下を検索します。目的のリソースファイルが見つからない場合、次にWebアプリケーション内の/WEB-INF/libに配置されているjarファイル内の/META-INF/resources配下を検索しますが、このWebアプリケーションに含まれるjarファイルの内部が検索対象から外れているため、目的のリソースファイルのURLを取得できずnullが返却されます。
対処方法
回避方法
Webアプリケーションの/WEB-INF/libに配置されているjarファイル内の/META-INF/resources配下に格納したリソースファイルを次の通りWebアプリケーション直下に格納するようWebアプリケーションを再作成して再配備します。
- 元のWebアプリケーションの構成
/WEB-INF/lib/<jarファイル>!/META-INF/resources/<リソースファイル>
- 見直し後のWebアプリケーションの構成
/WEB-INF/lib/<jarファイル>
/<リソースファイル>
更新履歴