1. 程式人生 > >tomcat的webappclassloader中一個奇怪的異常資訊

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關鍵字吧。