zoukankan      html  css  js  c++  java
  • 关于tomcat的classloader的一点想法

    关于tomcat的classloader相关的帖子网上非常多,我觉得比较好的有:

    https://www.jianshu.com/p/d90e4430b0b9

    https://blog.csdn.net/qq_38182963/article/details/78660779

    但是看了很多文章都说tomcat违反了双亲委派模型,可以是通过源码以及一些概念包括tomcat的delegate的设置描述并没有觉得tomcat是因为违反了双亲委派模型才实现多个应用的classpath隔离。

    delegate为true,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。

    delegate为false,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。

    个人觉得:
    Tomcat可以走双亲委派模式,也可以走违反双亲委派的模式
    Tomcat的隔离性在于它的每个应用都有自己的WebappClassLoader以及每个jsp都有自己jasperloader(不同的classloader加载同一个class都是不同的类,实例也不同)。
    Tomcat的隔离性不是因为他违反了双亲委派模式,更不是因为他用了上下文模式,上下文模式只是解决了双亲委派模式下上层loader加载下层loader的问题。

  • 相关阅读:
    LOJ10092半连通子图
    LOJ104 普通平衡树
    LOJ10145郁闷的出纳员
    LOJ10144宠物收养所
    LOJ10043
    洛谷P3850 书架
    codevs 1814 最长链
    洛谷 P2022 有趣的数
    codevs 1312 连续自然数和
    noip 2010 引水入城
  • 原文地址:https://www.cnblogs.com/zxporz/p/10702674.html
Copyright © 2011-2022 走看看