tomcat为什么想打破双清委派
时间: 2023-05-04 16:06:35 浏览: 63
Tomcat想打破双清委派主要是因为这种委派模型会导致安全漏洞。双清委派是一种Java运行时权限控制机制,可以防止不信任的代码在Java虚拟机中执行恶意操作,比如访问本地文件、网络连接等。但是,双清委派机制需要依赖双亲委派机制,即父类加载器优先加载类,而子类加载器只有在父类加载器加载不了时才会自己去加载类。这样的话,如果父类加载器本身被恶意代码修改,就会影响到子类加载器,导致安全漏洞。
为了避免这种漏洞,Tomcat决定尝试打破双清委派,用自定义委派机制替代。自定义委派机制允许更为灵活的权限控制,可以根据实际业务需求进行配置。例如,Tomcat可以将自己的类加载器作为顶级加载器,将所有类加载请求委派给它,然后根据需要再根据业务需求委派给子类加载器。这样就能够有效地避免父类加载器被修改所导致的安全问题。
总之,Tomcat想打破双清委派主要是为了提高应用程序的安全性和可靠性,减少安全漏洞的发生。虽然这种做法可能会增加一些复杂度,但是对于大型、关键的应用程序来说,安全是无可妥协的。
相关问题
tomcat为什么要打破双亲委派模型
Tomcat打破双亲委派模型是为了解决Java应用程序在运行时使用的类库与Tomcat自带的类库冲突的问题。双亲委派模型是Java类加载器的一种加载机制,它会优先从父类加载器中查找类,如果找不到再从自身的类路径中查找。这种机制可以保证类的唯一性和安全性,但是也有可能导致类库冲突的问题。
在Tomcat中,应用程序与Tomcat自带的类库可能会存在相同的类,如果按照双亲委派模型加载类,会导致应用程序使用的类库被Tomcat自带的类库所覆盖,从而导致应用程序无法正常运行。因此,Tomcat打破双亲委派模型,使用自定义的类加载器来加载应用程序中的类,从而解决了类库冲突的问题。
tomcat为什么要打破双亲委派模型,能举个例子吗
Tomcat打破双亲委派模型是因为它需要在自己的类加载器中加载一些特定的类,而不是委托给父级类加载器。
举个例子,假设在Tomcat中使用了一个第三方库,而这个库中的某些类需要与Tomcat中的类交互。如果按照双亲委派模型,Tomcat的类加载器会委托给父级类加载器去加载这个第三方库中的类。但是,由于父级类加载器可能无法找到Tomcat中的类,就会抛出ClassNotFoundException异常,导致程序运行失败。
为了解决这个问题,Tomcat打破了双亲委派模型,使用自己的类加载器加载第三方库中的类,保证能够找到Tomcat中的类并正确运行程序。