Java类加载器委派模型是强制性的吗?

如果我有一个自定义类加载器,而不是首先委托给它的父级,尝试搜索并加载类本身是否会违反某些声明/未声明的规则?

Tomcat webapp类加载器遵循这个模型,所以我想它至少在某种程度上起作用:)来自Tomcat类加载器文档 :

如上所述,Web应用程序类加载器与默认的Java 2委派模型不同(根据Servlet规范2.4版,第9.7.2节Web应用程序类加载器中的建议)。 当处理从Web应用程序的WebappX类加载器加载类的请求时,此类加载器将首先查看本地存储库,而不是在查找之前委派。 有例外。 作为JRE基类的一部分的类不能被覆盖。 对于某些类(例如J2SE 1.4+中的XML解析器组件),可以使用J2SE 1.4认可的function。 最后,类加载器将显式忽略包含Servlet API类的任何JAR文件 – 不要在Web应用程序中包含此类JAR。 Tomcat 6中的所有其他类加载器都遵循通常的委托模式。

听起来像你在做这件事之前应该非常谨慎,但在某些情况下,如果仔细使用它可能会很有用。 您应该对其进行彻底记录(特别是如果第三方开发人员会看到这一点),并确保包含足够的日志记录/诊断程序以帮助解决棘手的问题。