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能够实现不同应用程序之间的类加载隔离。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题