11

我需要帮助弄清楚为什么我的几个 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 环境中的 modifyTestInterval 从默认(4 秒)增加到 3600(1 小时)[注意:它当前设置为 0 以尝试帮助我重现问题]
  4. 将 Tomcat 工作目录上的所有者更改为与运行服务的 id 相同的 id。

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

虽然这个问题出现在我的产品和 QA 服务器上,但我的本地 Tomcat 实例上并没有出现。事实上,即使在运行 QA 和 Prod 应用程序时,我还没有从我的工作站上看到问题。这个问题只被其他人看到过。

4

3 回答 3

5

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

解决方案是简单地删除工作目录并重新启动tomcat

于 2017-05-01T19:10:16.600 回答
2

检查此文件或文件夹的权限。通常,此问题是由于无法访问文件夹引起的。

于 2017-01-10T02:24:08.307 回答
2

.war在我们的实时服务器上部署后我遇到了同样的问题。这些是我为解决问题而遵循的步骤:

1)关闭tomcat服务器

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

3)手动删除.class.java

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

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

6)再次启动tomcat服务。

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

我希望它也适合你。

于 2016-11-03T11:09:13.107 回答