Par défaut, Tomcat empêche les applications Web de charger plusieurs fichiers .jars qui font partie de la distribution Tomcat (par exemple, le servlet et les API JSP) - est-il possible d'en configurer d'autres à exclure également?
Si cela ne peut pas être fait uniquement avec la configuration, Tomcat fournit-il des points d'extension pour la validation des ressources?
Je souhaite utiliser des bibliothèques de journalisation partagées et je dois m'assurer qu'une application erronée n'encombre pas la configuration.
Exemple
Voici à quoi je fais référence (à partir du journal de démarrage 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
Réponses:
Vous vérifiez / filtrez les applications Web qui se chargent à l'aide d'un chargeur personnalisé s'étendant à partir de
org.apache.catalina.loader.WebappClassLoader
celui mentionné dans la documentation Tomcat .Découvrez l'implémentation de Tomcat (7.0.19) de la norme
WebAppClassLoader
qui implémente le filtrage dejavax.servlet.Servlet
pour commencer. Il suffit probablement de remplacer cette classe et de simplement ajouter quelques entrées dans lesprotected String[]
champstriggers
etpackageTriggers
.la source
WebappClassLoader
devrait aller dans son propre JARTOMCAT_HOME/lib
loin de vos applications Web, juste pour énoncer l'évidence :)