Tomcat 的类加载机制了解吗?

omcat 的类加载机制了解吗?
Tomcat是主流的Java Web服务器之一,为了满足特定的功能需求,它自定义了一些类加载器。
实际上,Tomcat打破了双亲委派模型。
作为一个Web容器,Tomcat可能需要部署多个应用程序。不同的应用程序可能依赖于同一个第三方类库的不同版本,但是这些不同版本的类库中可能存在相同全路径名的类。例如,多个应用程序都依赖于hollis.jar,但是应用程序A需要使用1.0.0版本,而应用程序B需要使用1.0.1版本。而这两个版本中都包含了一个名为com.hollis.Test的类。如果采用默认的双亲委派类加载机制,无法加载多个相同的类。
因此,Tomcat破坏了双亲委派原则,并提供了隔离机制。它为每个Web容器单独提供了一个WebAppClassLoader加载器。每个WebAppClassLoader负责加载其所属目录下的class文件,如果无法加载,则交给CommonClassLoader加载。这与双亲委派模型恰好相反。通过这种方式,Tomcat能够实现不同应用程序之间的类加载隔离。