我知道Tomcat使用类加载器来分区webapps,并且Tomcat中的webapp类加载器会覆盖默认的类加载器行为,因此它会在本地检查类,如果找不到它,则只委托父类加载器。
知道这一点我确信Tomcat会确保.war文件中的类只对该webapp可用,因为它将由该类加载器加载。
我不确定的是Tomcat如何对核心类进行分区,如果有的话。
我知道Java的核心类是由Bootstrap类加载器加载的。
但是,如果webapp类加载器首先尝试加载所需的类,这是否意味着webapp类加载器将自己加载核心类?
我想知道的是 Tomcat的类加载器层次结构是否确保为每个webapp单独加载核心Java类,或者它们是否在webapps之间共享?
答案 0 :(得分:1)
如果您使用核心类文件引用已安装的JRE,则tomcat会与所有Web应用程序共享这些文件。
单独的类加载仅适用于放置在每个webapp lib目录中的jar文件。
即使是放在tomcat lib目录下的jar文件也会在所有应用程序之间共享。