tomcat的webappclassloader中一個奇怪的異常資訊
如果一個應用丟擲大量的Class not found資訊,一般你會懷疑包衝突。可是tomcat的webappclassloader卻有這樣的問題:
如果一個應用釋出出現問題, webappclassloader的started屬性被設為false.然後其它執行緒如果繼續使用webappclassloader進行class load,則大量的Class not found異常
被丟擲:
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 }
所以如果有大量的ClassNotFoundException的話先搜尋一下是否有webappClassLoader.stopped關鍵字吧。