Tomcat中class loader的层级如下:
--------JVM-----------
bootstrap class loaderexentions class loader
system class loader
--------Tomcat--------
commom class loader # 应用类和tomcat特定的类,但不建议存放应用类
server class loader/Catalina class loader # 存放tomcat特定的类,这些类对应用不可用
shared class loader # 存放各应用需要共享的类
web application class loader
(1)Web Application Class Loader先查找自身缓存;
(2)若未找到,则到System Class Loader中查找;若还未找到,则继续向上级Loader中查找;
(3)若未找到,则判断要加载的类是否在下列包中:
javax.*
org.xml.sax.*
org.w3c.dom.*
org.apache.commons.logging.*
org.apache.xerces.*
org.apache.xalan.*
若是则到shared class loader中查找;若未找到,则继续向上级Loader中查找;若还未找到,则由Web Application Class Loader在自己的作用域查找;若还未找到,则查找失败。
(4)若不是以上包,则由Web Application Class Loader在自己的作用域查找,先查找classes再查找lib;(5)若未找到,则到shared class loader中查找;若未找到,则继续向上级Loader中查找;若还未找到,则查找失败。