java - Tomcat 6 中的每个 webapp 是否独立加载核心类?

标签 java tomcat6 classloader

我知道 Tomcat 使用类加载器来划分 Web 应用程序,并且 Tomcat 中的 Web 应用程序类加载器会覆盖默认的类加载器行为,因此它会在本地检查类,并且仅在找不到类时才委托(delegate)给父类加载器。

知道这一点后,我确信 Tomcat 将确保 .war 文件中的类仅可供该 Web 应用程序使用,因为它将由该类加载器加载。

我不确定 Tomcat 如何对核心类进行分区(如果有的话)。

我知道Java的核心类是由Bootstrap类加载器加载的。

但是,如果 webapp 类加载器尝试首先加载所需的类本身,这是否意味着 webapp 类加载器将自行加载核心类?

我想知道的是Tomcat的类加载器层次结构是否确保为每个Web应用程序单独加载核心Java类,或者它们在Web应用程序之间共享?

最佳答案

如果您通过核心类文件引用已安装的 JRE,则 Tomcat 会与所有 Web 应用程序共享这些文件。

单独的类加载仅适用于放置在每个 webapp lib 目录中的 jar 文件。

甚至放置在 tomcat lib 目录下的 jar 文件也在所有应用程序之间共享。

关于java - Tomcat 6 中的每个 webapp 是否独立加载核心类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668116/

相关文章:

java - init() : Couldn't get lock for/var/lib/tomcat6/./tm.out 中的 Atomikos 错误

linux - 使用 -Dsvnkit.http.sslProtocols ="SSLv3"选项启动 Jenkins

java - 刻录到磁盘后无法加载字体

java - 具有多个应用程序的 Tomcat 上的类加载器行为

java - 与模式匹配的短语的字符串正则表达式

java - 从字符串中删除最后一个数字

java - 如何设置输出流指向的字节?

java - 需要在Java中通过数组来呈现二叉搜索树的节点。我怎么做?

java - tomcat jdbc和spring版本兼容性

java - Eclipse:将源添加到动态添加的类