JSP を起動しようとすると、いくつかの Web アプリケーションが断続的に 404 エラーをスローする理由を理解するのに助けが必要です。1 つは JSP に直接アクセスし、もう 1 つは JSP に転送するサーブレットを持っています。ほとんどの場合、ページは機能しますが、404 がスローされることがあります。ユーザーがブラウザーを 1 ~ 3 回更新すると、変更を加える必要なく、ページが再び機能し始めます。
Web ブラウザー (Chrome) で表示されるエラーの例を次に示します。
type: Status report
message: /app_root/my_page.jsp
description: The requested resource is not available
この問題は、JSP ページの再コンパイルに関連しているようです。.war ファイルと展開されたディレクトリは変更されていません。各 404 エラーに対応するログには常に 3 つのエラーがあります。
WARNING: Failed to delete generated class file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.class]
May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler removeGeneratedFiles
WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java]
May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler generateJava
WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java]
Tomcat 7.0.53 で Java 1.7 を実行しています。Tomcat は Windows 2008 R2 サーバーで実行されています。
グーグルから見つけた情報に基づいて、これまでに試したことは次のとおりです。ただし、404 は続行します。
- Tomcat ディレクトリ全体で Windows のインデックス作成を無効にしました
- 本番環境で開発モードをオフにしました
- 私の QA 環境で、modificationTestInterval をデフォルト (4 秒) から 3600 (1 時間) に増やしました [注: 問題を再現できるように、現在は 0 に設定されています]
- Tomcat 作業ディレクトリの所有者を、サービスが実行されている ID と同じ ID に変更しました。
作業ディレクトリでウイルス対策をオフにして、それが役立つかどうかを確認しています。
この問題は本番サーバーと QA サーバーで発生していますが、ローカルの Tomcat インスタンスでは発生しません。実際、QA および Prod アプリケーションを実行している場合でも、ワークステーションから問題を確認したことはありません。この問題は、他の人だけが見ています。