If an app throws a lot of class not found information, you'll generally suspect packet collisions. But the webappclassloader of Tomcat has this problem:
If there is a problem with an app publication, the started property of WebappClassLoader is set to false. Then other threads continue to use WebappClassLoader for class load, a large number of class not found exceptions
Be thrown:
1391 public Class loadclass (String name, Boolean resolve)
1392 throws ClassNotFoundException {
1393
1394 synchronized (Name.intern ()) {
1395 if (log.isdebugenabled ())
1396 Log.debug ("LoadClass (" + name + "," + Resolve + ")");
1397 Class clazz = null;
1398
1399//Log access to stopped ClassLoader
1400 if (!started) {
1401 try {
1402 throw new IllegalStateException ();
1403} catch (IllegalStateException e) {
1404 Log.info (sm.getstring ("webappclassloader.stopped", name), E);
1405}
1406}
...................................................................
1516 throw new ClassNotFoundException (name);
1517}
1518}
So if you have a large number of classnotfoundexception, search first if there are webappclassloader.stopped keywords it.