Tomcat: è possibile escludere barattoli durante la distribuzione delle app?


8

Per impostazione predefinita, Tomcat impedisce alle webapp di caricare diversi .jar che fanno parte della distribuzione Tomcat (ad es. Servlet e API JSP): è possibile configurare anche altri da escludere?

Se non può essere eseguito solo con la configurazione, Tomcat fornisce punti di estensione per la convalida delle risorse?

Voglio usare librerie di registrazione condivise e devo assicurarmi che un'app errata non blocchi la configurazione.

Esempio

Questo è ciò a cui mi riferisco (dal registro di avvio di 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

Non credo che Tomcat escluda qualsiasi cosa come tale solo una questione di sequenza di caricamento di classe quale jar viene prima nel percorso di classe. Potresti essere dopo questo. stackoverflow.com/questions/267953/managing-libraries-in-tomcat

@Shahzeb: ho aggiunto un esempio. Non si tratta in realtà di come interagiscano i diversi classloader: voglio essere in grado di convalidare le risorse che le webapp tentano di caricare.
Dmitri,

Risposte:


6

Puoi controllare / filtrare le app Web caricate utilizzando un caricatore personalizzato che si estende da org.apache.catalina.loader.WebappClassLoadercome indicato nella documentazione di Tomcat .

Controlla l'implementazione di Tomcat (7.0.19) dello standardWebAppClassLoader che implementa il filtro dijavax.servlet.Servlet per iniziare. Probabilmente è abbastanza per sovrascrivere quella classe e inserire solo qualche altra voce nei protected String[]campi triggerse packageTriggers.


1
Certo, la tua abitudine WebappClassLoaderdovrebbe andare nel suo JAR TOMCAT_HOME/liblontano dalle tue app web, solo per affermare l'ovvio :)
Philipp Reichart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.