Tomcat的类加载机制
2019-04-07 本文已影响0人
那谁319
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。
* tomcat自定义的类加载器的WebAppClassLoader重写了loadClass()方法
* 对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,
* 加载不到时再交给commonClassLoader走双亲委托。
* 具体的加载逻辑位于WebAppClassLoaderBase.loadClass()方法中
* Common、Catalina、Shared类加载器是URLClassLoader类的实例,在默认的配置中,它们其实都是同一个对象,即Common ClassLoader
* Extended Loader加载System.getProperty("java.ext.dirs")所指定的路径或jar
* AppClass Loader加载System.getProperty("java.class.path")所指定的路径或jar
加载System.getProperty("java.class.path")所指定的路径或jar
![](https://img.haomeiwen.com/i3917357/59c67db34c922696.png)
![](https://img.haomeiwen.com/i3917357/17f07e3e27bc14c5.png)