一、
注意点:
1.Commom ,Catalina(service),Share类加载器并不是类,而是通过对象工厂创建的。
2.Webapp类加载和Jsp类加载器时类(打破双亲委派)
可以看到,在原来的Java的类加载机制基础上,Tomcat新增了3个基础类加载器和每个Web应用的类加载器+JSP类加载器;
3个基础类加载器在 conf/catalina.properties 中进行配置:
common.loader="
c
a
t
a
l
i
n
a
.
b
a
s
e
/
l
i
b
"
,
"
{catalina.base}/lib","
catalina.base/lib","{catalina.base}/lib/.jar","
c
a
t
a
l
i
n
a
.
h
o
m
e
/
l
i
b
"
,
"
{catalina.home}/lib","
catalina.home/lib","{catalina.home}/lib/.jar"
server.loader=
shared.loader=
Tomcat自定义了WebAppClassLoader类加载器,打破了双亲委派的机制,即如果收到类加载的请求,首先会尝试自己去加载,如果找不到再交给父加载器去加载,目的就是为了优先加载Web应用自己定义的类,我们知道ClassLoader默认的loadClass方法是以双亲委派的模型进行加载类的,那么Tomcat打破了这个规则,重写了loadClass方法,我们可以看到WebAppClassLoader类中重写了loadClass方法;