为什么我的Tomcat服务器在编译JSP时会抛出间歇性的404?

Spi*_*tis 10 java jsp tomcat intermittent http-status-code-404

我需要帮助弄清楚为什么我的几个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继续.

  1. 禁用整个Tomcat目录上的Windows索引
  2. 在我的生产环境中关闭了开发模式
  3. 我的QA环境中的modificationTestInterval从默认值(4秒)增加到3600(1小时)[注意:它当前设置为0以尝试帮助我重现问题]
  4. 将Tomcat工作目录上的所有者更改为与运行该服务的id相同的ID.

我正在工作目录中关闭防病毒软件,看看是否有帮助.

虽然这个问题发生在我的prod和QA服务器上,但我的本地Tomcat实例上并没有发生这种情况.事实上,即使在运行QA和Prod应用程序时,我还没有从我的工作站看到问题.这个问题只有其他人才能看到.

小智 5

Tomcat 容器缓存 JSP 解析器生成的 .java 和 .class 文件,供 Web 应用程序使用。有时这些会损坏或无法找到。这可能发生在包含对 JSP 修改的补丁或升级之后。

解决办法是干脆删除工作目录并重启tomcat


小智 4

在我们的实时服务器上部署后,我遇到了同样的问题.war。以下是我解决问题所遵循的步骤:

1)关闭tomcat服务器

2)前往<your tomcat directory> -> work -> Catalina -> localhost -> <your project> -> org -> apache -> jsp ->

3)手动删除.class.java

4).war从出现问题的网站的 webapps 文件夹中删除该文件和已部署的文件夹。

5)导出一个新的.war,并将其放入webapps文件夹中。

6)再次启动tomcat服务。

服务器完成部署后,它将自动在“work”目录中重新生成已删除的文件,并且网站应该再次可用,而不会出现间歇性 404 错误。

我希望它也适合你。