Java ClassLoader 委托模型意味着:当请求查找类或资源时,ClassLoader 实例会将类或资源的搜索委托给其父类加载器,然后再尝试查找类或资源本身。我看到了这个问题。一般我们应该使用它。但我想知道更多。有什么好的理由不应该使用它吗?
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
链接问题的答案和引用的Tomcat 类加载器文档似乎提供了一个很好的用例:像 Tomcat 这样的 Web 容器,它运行独立的 Web 应用程序。
您“通常”希望使用委托模型来避免应用程序的不同部分使用不同的类加载器加载类,否则类将被加载多次但彼此不兼容。这对于单个应用程序很有用 - 但是 Web 容器和应用程序服务器可以运行多个应用程序,您实际上希望应用程序能够加载它们自己版本的某些类。
例如,对于 Tomcat,每个正在运行的 Web 应用程序可能使用不同的库集或同一库的不同版本。有一些库的共享存储库应该可用于所有 Web 应用程序以及每个 Web 应用程序的特定于应用程序的存储库。
每个存储库都有自己的类加载器。这是 Tomcat 的类加载器树,顶部是父类加载器:
Bootstrap
|
System
|
Common
/ \
Webapp1 Webapp2 ...
特定于应用程序的存储库应具有优先权,因为它们可能包含共享存储库以外的其他库版本。
添加回答
举报
0/150
提交
取消