Tomcat的类载入器(ClassLoader)1Tomcat的类载入器(ClassLoader)(a)ClassLoader的结构TomcatServer在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的
TomcatServer的ClassLoader结构如下:+-----------------------------+|Bootstrap|||||System|||||Common||/\||CatalinaShared||/\||WebApp1WebApp2|+-----------------------------+其中:-Bootstrap-载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*
jar-System-载入$CLASSPATH/*
class-Common-载入$CATALINA_HOME/common/
,它们对TOMCAT和所有的WEBAPP都可见-Catalina-载入$CATALINA_HOME/server/
,它们仅对TOMCAT可见,对所有的WEBAPP都不可见-Shared-载入$CATALINA_HOME/shared/
,它们仅对所有WEBAPP可见,对TOMCAT不可见(也不必见)-WebApp-载入ContextBase
/WEB-INF/
,它们仅对该WEBAPP可见(b)ClassLoader的原理每个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类
系统默认的contextClassLoader是systemClassLoader,所以一般而言java程序在执行时可以使用JVM自带的类、$JAVA_HOME/jre/lib/ext/中的类和$CLASSPATH/中的类可以使用Thread
currentThread()