JVM中的类的唯一性: 由类加载器+和这个类本身确定。 双亲委派模型 类加载请求时,先委托给父类进行加载,父加载器也是如此。当父类加载器不能加载事,当前类才进行加载。 tomcat正统加载模型 tomcat的类加载器介绍 对应的结构图如下: 破坏双亲委派模型 1.java1.2之前的程序做兼容 向前兼容 2.JNDI等,(允许父类加载器委托子类加载器加载,打通了双亲委派模型的逆向)。 (使用,线程上下文加载器 Thread Context ClassLoader,这个由java.lang.Thread中的setContextClassLoader()方法进行设置) 3.OSGi(热部署可以平级查找): 举例说明: Bundle A:声明发布了packageA,依赖了java_*的包 Bundle B:声明依赖于packageA和packageC,同时也依赖java.*包 Bundle C:声明发布了packageC,依赖了packageA 其对应的结构图如下: OSGi加载规则如下: 将ava.*开头的委派给父类加载器。 否则委派列表名单内的类,委派给父类加载器。 否则Import列表中的类委托给Export这个类的Bundle加载器 否则Bundle的classPath,自己的加载器。 否则,查找类是否在自己的Fragment Bundle中,如果在则,委托给Fragment Bundle的类加载器 否则,查找Dynamic Import列表的Bundle,委托给对应的Bundle加载 否则,查找失败。 |
|
来自: 昵称63557093 > 《待分类》