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
/ \
webapp1 webapp2 …
/ /
jasper1 jasper2 …
说明:
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目录下。
