WAS 小ワザ集

第34回:WARファイルのライブラリJARからファイルやJSPの読み込みを抑止する

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: WAS 小ワザ集

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:WAS 小ワザ集

このシリーズの続きに乞うご期待。

WAS V8.xがサポートしているServlet API 3.0では,Webリソースのモジュール化がサポートされました。WARファイルのWEB-INF/libに配置したJARファイルのMETA-INF/resourcesディレクトリ以下にJSPファイルやHTML/CSSなどの静的コンテンツを格納しておくことができます。

クライアントからリクエストされた静的コンテンツやJSPがWARファイルの通常のディレクトリに見つからなかった場合は,JARファイルの中に含まれていないか検索する処理が実行されます。そのため,WARファイルに大量のJARファイルが含まれているアプリケーションに対して,存在しないURLをもったリクエストを大量に送信した場合,アプリケーションサーバーの負荷が非常に高くなることがあります。

このような症状が発生している状態でWASのアプリケーションサーバーのスレッドダンプを取得すると,以下のようなスタックトレースをもつスレッドが大量に記録されます。

java/util/zip/ZipFile.open(String, int, long, boolean)
java/util/zip/ZipFile.<init>(java.io.File, int)
java/util/jar/JarFile.<init>(java.io.File, boolean, int)
java/util/jar/JarFile.<init>(java.io.File)
com/ibm/ws/webcontainer/util/MetaInfResourcesFileUtils.findInMetaInfResource(java.io.File[], String)
com/ibm/ws/webcontainer/util/MetaInfResourcesFileUtils.findInMetaInfResource(String)
com/ibm/ws/webcontainer/util/DocumentRootUtils.handleDocumentRoots(String,boolean, boolean, boolean, java.util.Map)
com/ibm/ws/webcontainer/util/DocumentRootUtils.handleDocumentRoots(String,java.util.Map)
com/ibm/ws/webcontainer/util/DocumentRootUtils.getDocumentRealPath(String,java.util.Map)
com/ibm/ws/webcontainer/webapp/WebApp.getRealPath(String)

アプリケーションがモジュール化されたWebリソースを使用していない場合,JARファイルのMETA-INF/resourcesディレクトリからJSPや静的コンテンツを検索しないようにすることができます。Webコンテナのカスタムプロパティとして,以下のものを設定してください。

名前com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing
true

Libertyプロファイルを使用している場合は,server.xmlに<webContainer>タグを追加し,skipMetaInfResourcesProcessing属性にtrueを設定してください。

<webContainer skipMetaInfResourcesProcessing="true" ></webContainer>

ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=WebSphere
ArticleID=982188
ArticleTitle=WAS 小ワザ集: 第34回:WARファイルのライブラリJARからファイルやJSPの読み込みを抑止する
publish-date=09082014