![Tomcat:可以在应用程序部署期间排除 jar 吗?](https://linux22.com/image/563048/Tomcat%EF%BC%9A%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%83%A8%E7%BD%B2%E6%9C%9F%E9%97%B4%E6%8E%92%E9%99%A4%20jar%20%E5%90%97%EF%BC%9F.png)
默认情况下,Tomcat 会阻止 webapps 加载属于 Tomcat 分发版的多个 .jar(例如 servlet 和 JSP API)——是否可以配置其他 .jar 以将其也排除?
如果无法仅通过配置来完成,Tomcat 是否提供了任何用于资源验证的扩展点?
我想使用共享日志库,并且需要确保错误的应用程序不会破坏配置。
例子
这就是我所指的(来自 Tomcat 启动日志):
Oct 1, 2011 5:53:40 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\tomcat\myapp\WEB-INF\lib\servlet-api.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2.
Offending class: javax/servlet/Servlet.class
答案1
你可以使用从中扩展的自定义加载器来检查/过滤哪些 Web 应用可以加载,org.apache.catalina.loader.WebappClassLoader
如Tomcat 文档。
查看Tomcat 对该标准的实现(7.0.19)WebAppClassLoader
实现过滤javax.servlet.Servlet
开始吧。覆盖该类并向字段protected String[]
和triggers
中放入更多条目可能就足够了packageTriggers
。