Tomcat 类加载器
程序员文章站
2022-05-12 11:57:04
...
Tomcat 拥有不同的自定义类加载器,以实现对各种资源库的控制。一般来说,Tomcat主要用类加载器解决一下4个问题:
- 同一个Web服务器里,各个web项目之间各自使用Java类库要互相隔离
- 同一个Web服务器里,各个Web项目之间可以提供共享的java类库
- 为了使服务器不受web项目的影响,应该使服务器的类库与应用程序类库互相独立
- 对于支持JSP的Web服务器,应该支持热插拔功能
Tomcat7 中类加载器
下面看看Tomcat7版本中对 这些类加载器处理的代码:
private void initClassLoaders() {
commonLoader = createClassLoader("common", null); // commonLoader的加载路径为common.loader
if( commonLoader == null ) {
commonLoader=this.getClass().getClassLoader();
}
catalinaLoader = createClassLoader("server", commonLoader); // 加载路径为server.loader,默认为空,父类加载器为commonLoader
sharedLoader = createClassLoader("shared", commonLoader); // 加载路径为shared.loader,默认为空,父类加载器为commonLoader
}
private ClassLoader createClassLoader(String name, ClassLoader parent) throws Exception {
String value = CatalinaProperties.getProperty(name + ".loader");
if ((value == null) || (value.equals("")))
return parent; // catalinaLoader与sharedLoader的加载路径均为空,所以直接返回commonLoader对象,默认3者为同一个对象
}