【发布时间】:2011-04-28 21:09:04
【问题描述】:
我们在 apache 后面有两个负载均衡的 tomcat 服务器。现在我们多次收到关于页面上 500 错误的报告。检查显示以下错误,但仅在其中一个 tomcat 上:
java.lang.ClassNotFoundException: org.apache.jsp.jsps.userLogin_jsp
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
etc...
我尝试清除工作目录并编辑 jsp 页面,但没有成功。解决它的唯一方法是重启 tomcat,但显然我们需要在生产中避免这种解决方案。
以前有人解决过这个问题吗?我的搜索只找到了没有答案的问题,包括一个被解决为“对我有用”的 tomcat 错误:https://issues.apache.org/bugzilla/show_bug.cgi?id=30450
非常感谢您的任何见解。以下是有关该项目的其他一些信息:
- apache-tomcat-6.0.28
- java 1.6
- 行家
- Spring 2.5(大量使用带有 jstl 的 MVC)
谢谢!
【问题讨论】:
-
如果它始终是同一个 Tomcat,即使只有该服务器在集群中,即另一台关闭,它是否也会失败。我想您无法在 Prod 上进行测试,您是否有要复制的预生产实例?是否总是相同的 userLogin.jsp 或其他 JSP?
-
也可以看到这个线程,issues.apache.org/bugzilla/show_bug.cgi?id=48097,虽然这会进入 6.0.21。你在运行 JspServlet development = true
-
感谢您提供的信息链接!不幸的是,这不是我能够重现的东西。一开始忘记了,昨天又推了一个新的战争,忘记清空工作目录才重新启动tomcat。我在tomcat启动后继续做。您认为这可能是造成这种情况的原因吗?
-
在 Tomcat 运行时清除工作目录对于生产中的服务器来说不是一个好主意。
-
之前是否有其他异常记录?这可能是其他事情的结果,例如内存不足。它可能由于某种原因无法生成 servlet 类文件。