Is the class name really "XYZ" or is that just a placeholder? It makes
a difference which class it's looking for - it could be a class from
Tomcat, from your webapp, or from one of the libraries needed by the
webapp.
-- 
Len


On Wed, Jul 23, 2008 at 04:33,  <[EMAIL PROTECTED]> wrote:
> I have a very large web application, running on three tomcats, which has
> been running for many years.
>
> There was a change made to the web application overnight, to add the
> following jar files to the webapp/WEB-INF/lib directory:
>
> avalon-framework-cvs-20020806.jar
> batik.jar
> crimson_1_1_3.jar
> icu4j_2_6.jar
> jacob.jar
> jaxen-full.jar
> saxon_6_5_3.jar
> saxpath.jar
>
> Today the web application started exhibiting behaviour I have never seen
> before. Some classes, in unrelated areas of the application are getting lost
> by Tomcat. It seems to be classes that are not used often, so my theory is
> that the class (a servlet, or another class used by the servlet or JSP) is
> loaded, and used, then a period of time goes by during which it is not used.
> The next time an attempt to use the same class then Tomcat gives this type
> of response:
>
> Error:
> javax.servlet.ServletException: Wrapper cannot find servlet class XYZ or a
> class it depends on
> at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:10
> 76)
> at
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:127)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:174)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127
> )
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117
> )
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :108)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
> at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
> at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
> at
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
> at
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java
> :895)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
> a:685)
> at java.lang.Thread.run(Thread.java:595)
>
>
> Root Stack Trace:
> java.lang.ClassNotFoundException: XYZ
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
> a:1359)
> at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
> a:1205)
> at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:10
> 68)
> at
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:127)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:174)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127
> )
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117
> )
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :108)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
> at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
> at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
> at
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
> at
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java
> :895)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
> a:685)
> at java.lang.Thread.run(Thread.java:595)
>
> -------------
>
> Then the next time the page is requested the response is a 404 error.
>
> The three load-balanced tomcat servers all have the same setup, and by
> getting one of the other servers you would sometimes get the page that was
> reported as missing.
>
> It seems that Tomcat is unloading the classes, but having read up about
> unloading classes it doesn't seem possible unless the class loader that
> loaded the class is also unloaded. The reloadble option in server.xml is NOT
> set to true.
>
> Any ideas?
>
> Robert Purvis
> Principal Technical Specialist
>
>
> Systems and Service Delivery
> NHS Connecting for Health
> 01392 206691
> [EMAIL PROTECTED]
> www.connectingforhealth.nhs.uk
>
>
> ***********************************************************************
> This  message  may  contain  confidential and  privileged  information.
> If you  are not the  intended recipient  you should not  disclose, copy
> or distribute information in this e-mail or take any action in reliance
> on its contents.  To do so is strictly  prohibited and may be unlawful.
> Please  inform  the  sender that  this  message has  gone astray before
> deleting it.  Thank you.
>
> 2008 marks the 60th anniversary of the NHS.  It's an opportunity to pay
> tribute to the NHS staff and volunteers who help shape the service, and
> celebrate their achievements.
>
> If you work for the NHS  and  would like  an NHSmail  email account, go
> to: www.connectingforhealth.nhs.uk/nhsmail
> ***********************************************************************
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to