Tomcat: mungkin untuk mengecualikan guci selama penerapan aplikasi?

8

Secara default, Tomcat mencegah webapp memuat beberapa .jar yang merupakan bagian dari distribusi Tomcat (mis. Servlet dan JSP APIs) - mungkinkah mengkonfigurasi orang lain yang juga dikecualikan?

Jika tidak dapat dilakukan dengan konfigurasi saja, apakah Tomcat memberikan titik ekstensi untuk validasi sumber daya?

Saya ingin menggunakan pustaka logging yang dibagikan, dan perlu memastikan bahwa aplikasi yang salah tidak merusak konfigurasi.

Contoh

Inilah yang saya maksud (dari log startup 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
Dmitri
sumber
Saya tidak berpikir kucing jagoan Mengecualikan hal seperti itu hanya masalah urutan classloading yang jar datang pertama di classpath. Anda mungkin setelah ini. stackoverflow.com/questions/267953/managing-libraries-in-tomcat
@ Shahzeb: Saya menambahkan contoh. Ini sebenarnya bukan tentang bagaimana classloader yang berbeda berinteraksi - Saya ingin dapat memvalidasi sumber daya yang coba dimuat oleh webapp.
Dmitri

Jawaban:

6

Anda memeriksa / memfilter apa yang dimuat aplikasi web menggunakan loader kustom yang diperluas dari yang org.apache.catalina.loader.WebappClassLoaderdisebutkan dalam dokumentasi Tomcat .

Lihat penerapan Tomcat (7.0.19) dari standarWebAppClassLoader yang menerapkan penyaringanjavax.servlet.Servlet untuk memulai. Mungkin cukup untuk mengesampingkan kelas itu dan hanya memasukkan beberapa entri lagi ke dalam protected String[]bidang triggersdan packageTriggers.

Philipp Reichart
sumber
1
Tentu saja, kebiasaan Anda WebappClassLoaderharus pergi ke JAR sendiri TOMCAT_HOME/libjauh dari aplikasi web Anda, hanya untuk menyatakan yang jelas :)
Philipp Reichart