De forma predeterminada, Tomcat evita que las aplicaciones web carguen varios .jars que forman parte de la distribución de Tomcat (por ejemplo, las API de servlet y JSP). ¿Es posible configurar otros para que también se excluyan?
Si no se puede hacer solo con la configuración, ¿Tomcat proporciona algún punto de extensión para la validación de recursos?
Quiero usar bibliotecas de registro compartidas y necesito asegurarme de que una aplicación errante no bloquee la configuración.
Ejemplo
Esto es a lo que me refiero (del registro de inicio de 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
Respuestas:
Usted verifica / filtra qué aplicaciones web se cargan usando un cargador personalizado que se extiende
org.apache.catalina.loader.WebappClassLoader
como se menciona en la documentación de Tomcat .Consulte la implementación de Tomcat (7.0.19) del estándar
WebAppClassLoader
que implementa el filtrado dejavax.servlet.Servlet
para comenzar. Probablemente sea suficiente para anular esa clase y simplemente poner algunas entradas más en losprotected String[]
campostriggers
ypackageTriggers
.fuente
WebappClassLoader
debe entrar en su propio JAR enTOMCAT_HOME/lib
lejos de sus aplicaciones web, sólo para decir lo obvio :)