为什么要打破双亲委派,怎么打破?

数据库JDBC Driver,Tomcat打破了双亲委派机制

Tomcat是web容器,一个web容器可能需要部署多个应用程序,不同应用程序可能会依赖同一个第三方库的不同版本,但是不同版本的库中某一个类的全路径可能是一样的,比如多个应用程序都要依赖demo.jar,但是A应用需要依赖1.0.0版本,但是B应用需要依赖1.0.1版本,这两个版本中都有一个类是com.demo.xxx,如果采用默认的双亲委派加载类的机制,那么无法加载多个相同的类,所以tomcat破坏双亲委派,提供隔离机制,为每个web容器单独提供一个WebAppClassLoader加载器,每个应用都有自己的WebAppClassLoader,该加载器重写了loadClass方法,会优先加载当前应用目录下的类,加载不到再交给WebAppClassLoader的父类加载器SharedClassLoader去加载,这和双亲委派机制刚好是相反的

你可能感兴趣的:(jvm)