6 双亲委派机制
6 双亲委派机制
由于Java虚拟机中有多个类加载器,双亲委派机制的核心是解决一个类到底由谁加载的问题
双亲委派机制的作用
-
保证类加载的安全性
通过双亲委派机制避免恶意代码替换JDK中的核心类库,比如java.lang.String,确保核心类库的完整性和安全性
-
避免重复加载
可以避免同一个类被加载多次
![]()
打破双亲委派机制
打破双亲委派机制的三种方式:
-
自定义类加载器
自定义类加载器并且重写
loadClass方法,就可以将双亲委派机制的代码去除 -
线程上下文类加载器
利用上下文类加载器加载类,比如JNDI、JDBC、JCE、JAXB和JBI等框架使用了SPI机制+线程上下文类加载器
-
OSGI框架的类加载器
OSGI实现了一整套类加载机制,允许同级类加载器之间互相调用
为什么要打破双亲委派机制
相同的类加载器+相同的类限定名会冲突例:一个Tomcat程序中是可以运行多个Web应用的,如果这两个应用中出现了相同限定名的类,比如Servlet类Tomcat要保证这两个类都能加载并且它们应该是不同的类。如果不打破双亲委派机制,当应用类加载器加载Web应用1中的MyServlet之后,Web应用2中相同限定名的MyServlet类就无法被加载了。


浙公网安备 33010602011771号