WebappX — 为部署在单个 Tomcat 实例中的每个 Web 应用程序创建一个类加载器。您的 Web 应用程序的 /WEB-INF/classes 目录中的所有未打包的类和资源,以及您的 Web 应用程序的 /WEB-INF/lib 目录下的 JAR 文件中的类和资源,都会对该 Web 应用程序可见,但对其他 Web 应用程序不可见。
如上所述,Web 应用程序类加载器与默认的 Java 委托模子有所不同(根据 Servlet 规范 2.4 第 9.7.2 节 Web 应用程序类加载器的建议)。当处理对 Web 应用程序的 WebappX 类加载器的加载类的请求时,此类加载器首先会查找当地存储库,而不是委托给父级再查找。但也有一些例外。JRE 根本类的一部分无法被覆盖。有一些例外,比如可以利用可升级模块功能覆盖的 XML 解析器组件。最后,对于由 Tomcat 实现的规范(Servlet、JSP、EL、WebSocket),Web 应用程序类加载器始终首先委托。Tomcat 中的所有其他类加载器都遵循通常的委派模式。
因此,从 Web 应用程序的角度来看,类或资源加载按以下顺序查找存储库: