Hi all, does anyone else ever see weird compile and IO errors when
Tomcat is restarted under load, in response to HTTP requests from
robots?

We have a JSP/Servlet based site running multiple Apache Tomcat 5.5
servers on Linux.

We set reloadable to false in our server.xml, and when we update our
code, we push the new code and then restart each app server (we have
several servers running Tomcat 5.5 behind a load balancer).

During these restarts, we intermittently see JasperException compiling
JSPs, ClassNotFoundExceptions on tag files, and IOExceptions on
tmpFile.renameTo(classFile).

These weird exceptions occur ONLY when we are starting up our servers
again.  At all other times, our Tomcat servers run fine with no
similar exceptions.

I've also noticed that most of these exceptions occur for HTTP
requests with user agents for  Yahoo Slurp, GoogleBot, or curl,
indicating that it is a robot hitting our site so quickly and so soon
after the Tomcat servers are restarted.  But shouldn't Tomcat block
any HTTP requests until it is actually ready to process them without
any weird compile errors?

Here are examples of these intermittent exceptions that we see during
these startup windows:

org.apache.jasper.JasperException: Unable to compile class for JSP
at
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
at
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:3
28)
at
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
63)


java.lang.ClassNotFoundException: org.apache.jsp.tag.web.error_tag
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:133)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:65)
at
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:596)
at
org.apache.jasper.servlet.JspServletWrapper.loadTagFile(JspServletWrapper.ja
va:219)
at
org.apache.jasper.compiler.TagFileProcessor.loadTagFile(TagFileProcessor.jav
a:515)
at
org.apache.jasper.compiler.TagFileProcessor.access$000(TagFileProcessor.java
:48)


java.io.IOException: tmpFile.renameTo(classFile) failed
at
org.apache.jasper.compiler.SmapUtil$SDEInstaller.install(SmapUtil.java:245)
at org.apache.jasper.compiler.SmapUtil.installSmap(SmapUtil.java:164)
at
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:429)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
63)

Thank you if you have any idea what is causing this or how to get
Tomcat to wait until it is ready before responding to HTTP requests.

Jonathan

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to