Tomcat:是否可以在应用程序部署期间排除jar?


8

默认情况下,Tomcat阻止Web应用程序加载作为Tomcat发行版一部分的多个.jar(例如servlet和JSP API)-是否可以将其他配置也排除在外?

如果仅靠配置无法完成,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

我不认为tomcat排除任何问题,仅是jar在classpath中排在首位的类加载顺序。您可能在此之后。stackoverflow.com/questions/267953/managing-libraries-in-tomcat

@Shahzeb:我添加了一个示例。这实际上与不同的类加载器如何交互无关-我希望能够验证webapp尝试加载的资源。
德米特里(Dmitri)

Answers:


6

您可以使用自定义加载程序(从Tomcat文档中org.apache.catalina.loader.WebappClassLoader提到的扩展)检查/过滤哪些Web应用程序加载。

查看Tomcat的标准实现(7.0.19),该标准WebAppClassLoader实现了入门的过滤功能javax.servlet.Servlet。覆盖该类并仅在protected String[]字段triggers和中添加一些条目就足够了packageTriggers


1
当然,您的风俗习惯WebappClassLoader应该TOMCAT_HOME/lib远离您的Web应用程序进入其自己的JAR ,只是为了说明显而易见的意思:)
Philipp Reichart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.