- TOMCAT的载入器是什么
TOMCAT的载入器指的是 Servlet应用的载入器,一个Servlet应用就会有一个载入器的实例。每个载入器中都引用了 TOMCAT的自定义类加载器。
载入器继承于 org.apache.catalina.Loader 接口。TOMCAT的载入器是 org.apache.catalina.loader.WebappLoader
默认的类加载器是 org.apache.catalina.loader.WebappClassLoader
- 为什么TOMCAt需要自定义类加载器?
要说明这个问题,需要考虑TOMCAT设计时,给予Servlet应用的权限。
事实上,Servlet只允许访问当前Servlet 应用中 WEB-INF/class目录下的类,和WEB-INF/lib下的包。
为了达到这个目的,TOMCAT必须要做两件事
- 自定义类加载器 (如果使用系统的类加载器载入一个Servlet类,那么servlet就能访问所有的类,包括当前运行的Java虚拟机中ClassPath路径下的所有库类。)
- 类加载器与Context绑定(Context对应一个Servlet应用,每个Servlet应用的类加载权限需要独立)
TOMCAT本身使用的类加载器
- 三个Loader的作用是什么?
TOMCAT包含三个Loader,分别是commonLoader,catalinaLoader和sharedLoader。
commonLoader是catalinaLoader和sharedLoader的父加载器。
commonLoader中包含了一下路径
common.loader=${catalina.base}/lib,
${catalina.base}/lib/*.jar,
${catalina.home}/lib,
${catalina.home}/lib/*.jar
默认情况下,catalinaLoader和sharedLoader的路径和commonLoader一样。
可以在catalina.properties中配置。
#catalinaLoader的路径
server.loader=
#sharedLoader的路径
shared.loader=