tomcat的类加载器设计
时间: 2023-11-29 08:43:16 浏览: 42
Tomcat的类加载器设计主要分为三个层次:Common、Catalina和Web应用程序类加载器。其中,Common类加载器是Tomcat应用服务器顶层的公用类加载器,其路径为common.loader,默认指向$CATALINA_HOME/lib下的包;Catalina类加载器是用于加载Tomcat应用服务器的类加载器,其路径为server.loader,默认为空;Web应用程序类加载器是用于加载Web应用程序的类加载器,其路径为webapp.loader,默认指向$CATALINA_BASE/webapps下的应用程序目录。
Tomcat的类加载器设计采用了双亲委派模型,即当一个类加载器收到类加载请求时,它首先会将请求委派给其父类加载器去处理,如果父类加载器无法加载该类,则该类加载器才会尝试自己加载该类。这种设计可以保证类的唯一性,避免类的重复加载,提高了应用程序的安全性和稳定性。
在Tomcat的类加载器设计中,Web应用程序类加载器的父类加载器是shared类加载器,而不是Catalina类加载器。这是因为Web应用程序类加载器需要加载的类通常是应用程序特有的,而不是Tomcat应用服务器的公用类或者Tomcat应用服务器的类。因此,Web应用程序类加载器的父类加载器应该是shared类加载器,而不是Catalina类加载器。
相关问题
tomcat自定义类加载器
Tomcat自定义类加载器是指Tomcat服务器在启动时,会创建自己的类加载器,用于加载Web应用程序中的类。这种类加载器可以加载Web应用程序中的类,同时也可以加载Tomcat服务器中的类。Tomcat自定义类加载器的主要作用是解决Web应用程序中的类与Tomcat服务器中的类之间的冲突问题,同时也可以实现热部署功能。
Tomcat自定义类加载器的实现方式是通过继承Java的ClassLoader类来实现的。Tomcat自定义类加载器会首先尝试使用父类加载器来加载类,如果父类加载器无法加载该类,则会使用自定义类加载器来加载该类。这种方式可以保证Web应用程序中的类与Tomcat服务器中的类之间的隔离性,同时也可以避免类的重复加载。
Tomcat自定义类加载器的实现还可以解决JAR包多版本冲突的问题。当Web应用程序中需要使用多个版本的同一个JAR包时,Tomcat自定义类加载器可以根据需要加载不同版本的JAR包,从而避免版本冲突的问题。
tomcat类加载机制
Tomcat的类加载机制遵循Java Web应用程序规范,采用了双亲委派模型。在Tomcat启动时,它会创建三个类加载器,分别是BootstrapClassLoader,CommonClassLoader和WebappClassLoader。
BootstrapClassLoader是JVM内置的类加载器,用于加载Java核心类库,它是所有类加载器的根,由JVM负责加载。
CommonClassLoader位于Tomcat的公共类库目录下,用于加载Tomcat本身的类库,如servlet-api.jar。
WebappClassLoader用于加载Web应用程序的类库,每个Web应用程序都有一个自己的WebappClassLoader实例,它是CommonClassLoader的子类,能够加载Web应用程序中的类和资源文件。
当Web应用程序启动时,Tomcat会先加载CommonClassLoader中的类库,然后再加载WebappClassLoader中的类库。在加载类时,Tomcat会先将类加载请求委托给父类加载器,如果父类加载器无法找到该类,则会交由当前类加载器来加载。
这样的类加载机制保证了Tomcat的安全性和可靠性,同时也避免了类的重复加载和冲突。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)