A couple months ago I had a slightly different setting but with the same strange result - NoClassDefFoundErrors which occurred on a particular jsp page in my app, but only if it was the first jsp accessed following a restart (and remained in the error state until the next restart). If it was not the first jsp accessed, then everything came up fine (with nothing in the configuration or app changing in between). I also figured it's some classloader bug in Tomcat, not entirely a race condition (since it did happen consistently), but something that manifests itself depending on the order of class loading.

I never did find out for sure what the problem was (maybe it's the sync issue Mark refers to below), but I stumbled upon a workaround, which I do not quite understand, which fixed this for good: I changed the order of the first two statements in the jsp, the first was one that accessed java.net.URI (a system class) and the second the session bean declaration (a custom app-specific class). Although the two statements were unrelated to each other and their order should not have made any difference, this solved the problem (switching them back did reintroduce the error, consistently). I still suspect the problem was with the order of classloading.


So, not sure if this will help, but in the off chance that your issue is related to the one I was experiencing, you might want to try fiddling with the order in which classes are accessed/loaded by Tomcat (either via their xml reference, or their actual content's first statements) and hopefully something will work. Yes, it sounds strange, but it worked for me in a reproducible manner.


Good luck :-)


Amichai


Mark Thomas wrote:

M4N - Arjan Tijms wrote:
I removed the obvious suspect, a duplicate postgresql driver that
appeared in both WEB-INF/lib  and [tomcat install dir]/lib.
Unfortunately this did not seem to help. Last night I needed to restart
the production server for a configuration change and I needed 22(!)
restarts for Tomcat to start up correctly.

It really seems that there's a race condition going on somehow. I mean,
if it was a structural problem then Tomcat would simply never start up,
wouldn't it?

A reasonable conclusion.

The Jboss libraries are the Jboss client libraries and are needed to
consume EJBs from a remote Jboss AS instance. Maybe there are some
classes somewhere that conflict with those of Tomcat, but if that would
be true it's still hard to understand why starting up fails in
production but never on a local workstation.

Does the production box have more cores than the dev box? If there was a
race condition you would be more likely to see it with more cores.

Anyone has any idea?

There was a sync issue in the webappclassloader fixed in 6.0.19.
Although the symptoms were different, it might be worth trying 6.0.20.

Mark



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


Reply via email to