Tomcat: có thể loại trừ bình trong quá trình triển khai ứng dụng?


8

Theo mặc định, Tomcat ngăn các ứng dụng web tải một số .jars là một phần của bản phân phối Tomcat (ví dụ: API của servlet và API) - có thể định cấu hình các loại khác để loại trừ không?

Nếu không thể thực hiện với cấu hình một mình, Tomcat có cung cấp bất kỳ điểm mở rộng nào để xác thực tài nguyên không?

Tôi muốn sử dụng các thư viện ghi nhật ký được chia sẻ và cần đảm bảo rằng một ứng dụng sai lầm không làm tắc nghẽn cấu hình.

Thí dụ

Đây là những gì tôi đang đề cập (từ nhật ký khởi động 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

Tôi không nghĩ tomcat Loại trừ bất kỳ điều gì như vậy chỉ là vấn đề về trình tự tải lớp mà jar xuất hiện đầu tiên trong đường dẫn lớp. Bạn có thể là sau này. stackoverflow.com/questions/267953/managing-lologists-in-tomcat

@Shahzeb: Tôi đã thêm một ví dụ. Đây thực sự không phải là cách các trình tải lớp khác nhau tương tác - Tôi muốn có thể xác thực các tài nguyên mà các ứng dụng web cố gắng tải.
Dmitri

Câu trả lời:


6

Bạn kiểm tra / lọc những gì ứng dụng web tải bằng trình tải tùy chỉnh mở rộng từ org.apache.catalina.loader.WebappClassLoadernhư được đề cập trong tài liệu Tomcat .

Kiểm tra việc triển khai của Tomcat (7.0.19) về tiêu chuẩnWebAppClassLoader thực hiện việc lọcjavax.servlet.Servlet để bắt đầu. Có lẽ đủ để ghi đè lớp đó và chỉ cần đặt thêm một số mục vào các protected String[]trường triggerspackageTriggers.


1
Tất nhiên, tùy chỉnh của bạn WebappClassLoadernên đi vào JAR của chính nó TOMCAT_HOME/libkhỏi các ứng dụng web của bạn, chỉ để nêu rõ ràng :)
Philipp Reichart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.