Java 某些jsp页面的间歇性Tomcat ClassNotFoundException

Java 某些jsp页面的间歇性Tomcat ClassNotFoundException,java,apache,jsp,tomcat,Java,Apache,Jsp,Tomcat,我们有两个tomcat服务器在apache后面进行负载平衡。好几次我们在一页上收到500个错误的报告。选中显示以下错误,但仅在其中一个Tomcat上显示: java.lang.ClassNotFoundException: org.apache.jsp.jsps.userLogin_jsp at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPr

我们有两个tomcat服务器在apache后面进行负载平衡。好几次我们在一页上收到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 bug,它被解决为“适合我”:

我真的很感激你的洞察力。以下是关于该项目的一些其他信息:

  • apache-tomcat-6.0.28
  • java 1.6
  • 马文
  • Spring2.5(使用jstl大量使用MVC)

谢谢

如上所述,我不应该在Tomcat运行时清除它的工作目录。谢谢大家

我发现了另一个例子,可能会导致类似的情况。我在tomcat中部署了两个应用程序,当我部署第三个应用程序时,我开始注意到这一点 行为

在本例中,我发现使用这三个应用程序的tomcat会打开很多文件,在本例中,它有时需要打开大约1600个文件才能工作(系统libs、jars、temp等)。当它在某些请求中超过系统默认的1024个最大打开文件时,看起来有些文件无法打开,并且我有随机奇怪的错误 (包括jsp-s中经常出现的ClassNotFoundException)。所有这些都取决于我在浏览器窗口中点击这些应用程序的速度,文件的打开和关闭速度非常快

这对我很有帮助,我不再认为此实例存在问题:

ulimit -n 2048
这可能用于在服务器运行时观察打开的文件量(如果tomcat以“tomcat”用户的身份运行):


如果它总是同一个Tomcat,那么即使集群中只有该服务器(即另一个服务器关闭)也会失败吗。我想你不能在Prod上测试它,你有一个预生产的实例来进行复制吗?它总是同一个userLogin.jsp或其他jsp吗?也可以看到这个线程,尽管这会使它成为6.0.21。您使用的是JspServlet development=true吗感谢您提供的信息链接!不幸的是,这不是我能够复制的东西。一开始我忘了,但昨天我们又发起了一场新的战争,在我再次启动tomcat之前,我忘了清理工作目录。我在tomcat启动后就开始了。您认为这可能导致这种情况吗?对于生产中的服务器,在Tomcat运行时清除工作目录不是一个好主意。是否有可能在前面记录了其他异常?这可能是内存不足等其他原因造成的。由于某种原因,它可能无法生成servlet类文件。过去我们不得不增加ulimit,以解决其他一些问题(“日志中打开的文件太多”)。我认为ulimit的设置是每个人都应该知道的,但是我们大多数人发现了困难的方法!
while [ true ]; do lsof -u tomcat|wc -l; sleep 1s; done