Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

解決法

アプリケーションで開いたストリームは必ず閉じてください。さらに、アプリケーションの再配備または配備解除を繰り返し行う必要があり、アプリケーションで getResource または getResourceAsStream を使用して jar ファイルからリソースを取得する必要もある場合は、URL オブジェクトを返す getClass().getResource の使用を検討してください。その後、url.setUseCaches メソッドを呼び出してその jar ファイルのキャッシュを無効にしてから、url.getInputStream() を使用してストリームを取得します。

jar ファイルアクセスのキャッシュを無効にするとパフォーマンスが低下することがありますが、この手法により確実にアプリケーションを配備解除または再配備できます。getClass().getResourceAsStream メソッドを代わりに使用すると、リソースが存在する jar ファイルがキャッシュされ (これがデフォルトの Java ランタイム設定)、サーバーが停止するまで開いたままになることにも注意してください。