Por padrão, o Tomcat impede que os webapps carreguem vários .jars que fazem parte da distribuição do Tomcat (por exemplo, o servlet e as APIs JSP) - é possível configurar outros para também serem excluídos?
Se isso não puder ser feito apenas com a configuração, o Tomcat fornece algum ponto de extensão para validação de recursos?
Quero usar bibliotecas de log compartilhadas e preciso garantir que um aplicativo incorreto não atrapalhe a configuração.
Exemplo
É a isso que estou me referindo (no log de inicialização do 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
Respostas:
Você verifica / filtra quais aplicativos da Web carregam usando um carregador personalizado que se estende
org.apache.catalina.loader.WebappClassLoader
conforme mencionado na documentação do Tomcat .Confira a implementação do Tomcat (7.0.19) do padrão
WebAppClassLoader
que implementa a filtragemjavax.servlet.Servlet
para começar. Provavelmente é suficiente substituir essa classe e colocar mais algumas entradas nosprotected String[]
campostriggers
epackageTriggers
.fonte
WebappClassLoader
deve entrar em seu próprio JAR noTOMCAT_HOME/lib
longe de seus aplicativos web, apenas para indicar o :) óbvio