概要
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ファイル>
  /<リソースファイル> 
 
更新履歴