我需要帮助弄清楚为什么我的几个 Web 应用程序在尝试启动 JSP 时会间歇性地抛出 404 错误。其中一个具有直接访问的 JSP,另一个具有转发到 JSP 的 servlet。这些页面大部分时间都可以工作,但偶尔会抛出 404。如果用户刷新浏览器 1-3 次,页面将重新开始工作,无需进行任何更改。
以下是在 Web 浏览器 (Chrome) 中看到的错误示例:
type: Status report
message: /app_root/my_page.jsp
description: The requested resource is not available
该问题似乎与重新编译 JSP 页面有关。.war 文件和扩展目录没有改变。每个 404 错误对应的日志中始终存在三个错误:
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 环境中的 modifyTestInterval 从默认(4 秒)增加到 3600(1 小时)[注意:它当前设置为 0 以尝试帮助我重现问题]
- 将 Tomcat 工作目录上的所有者更改为与运行服务的 id 相同的 id。
我正在关闭工作目录上的防病毒软件,看看是否有帮助。
虽然这个问题出现在我的产品和 QA 服务器上,但我的本地 Tomcat 实例上并没有出现。事实上,即使在运行 QA 和 Prod 应用程序时,我还没有从我的工作站上看到问题。这个问题只被其他人看到过。