Tomcat 4中的ClassLoader sonymusic. (譯的比較差啦,大家隨便看看吧。為了讓英文好的同志直接查看,有不少是中英文都在一起的。如果有錯,請指出來。謝謝!)
For classes and resources specific to a particular web application, place unpacked classes and resources under /WEB-INF/classe of your web application archive, or place JAR files containing those classes and resources under /WEB-INF/lib of your web application archive. 如果只準備給某一個應用使用,就放到該應用的/web-inf/classes目錄下,如果是jar,zip文件 的話,就放到/web-inf/lib目錄下。
For classes and resources that must be shared across all web applications, place unpacked classes and resources under $CATALINA_HOME/classes, or place JAR files containing those classes and resources under $CATALINA_HOME/lib. 如果是準備給所有的web應用使用的話,就解到$Catalina_home/classes目錄下,如果是jar,zip文件的話,就直接放到$Catalina_home/lib目錄下。
ClassLoader的順序: 如圖:
Bootstrap
|
System
|
Common
/\
Catalina Shared / \
Webapp1Webapp2 ...
/ /
Jasper1Jasper2 ...
說明: Bootstrap - 包含了JVM中的基本的類,$Java_home/jre/lib/ext/目錄下的jar文件也算。當然有一些JVM做法不一樣。
System - 系統環境變量中的Classpath
Common - 包括 $CATALINA_HOME/common/classes(解開后的文件), $CATALINA_HOME/common/lib(jar文件),請不要將web application所專用的文件放到這里來。
Catalina - 包括$CATALINA_HOME/server/classes,$CATALINA_HOME/server/lib(注意這里的Class是不能夠被web應用訪問的。這只是為了實現tomcat而需要的。)
Shared - 包括$CATALINA_HOME/classes, $CATALINA_HOME/lib
WebappX - 包括特定web應用目錄下的 /WEB-INF/classes 和 /WEB-INF/lib (只能被該web應用所使用) JasperX - 如果你的web應用使用了JSP,tomcat也為其創建了一個classloader,包括jsp編譯器及需要的類。因為這個classloader是上一個classloader的child,所以在JSP編譯器和編譯過后的jsp文件中可以看到上面所有的class path。
注1:以上除特別說明,都表示可以被所有的web應用使用。 注2:一般來說會將解開來的class文件放到classes目錄下,將jar,zip文件放到lib目錄下。
|