Пользовательский клапан Tomcat, содержащийся в файле WAR веб-приложения

#tomcat6 #classloader #catalina #context.xml #tomcat-valve

#tomcat6 #classloader #каталина #context.xml #tomcat-клапан

Вопрос:

Я хочу реализовать пользовательский клапан и настроить его с помощью META-INF/context.xml .

Однако на данный момент, когда context.xml анализируется во время развертывания, Tomcat (6.0.32) умирает с ClassNotFoundException в моей пользовательской реализации Valve.

У меня сложилось впечатление, что я столкнулся с проблемой контекста загрузки класса, и я не уверен на 100%, что понимаю это.

Мой класс не найден, потому что он находится в файле WEB-INF / classes, а загрузчик классов на уровне контекста не может найти класс из-за иерархии?

Заранее спасибо.

Ответ №1:

Вы не можете загружать Valve файлы изнутри загрузчика классов webapp. Если вы посмотрите на http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html он показывает доступные загрузчики классов. Вы должны использовать один из загрузчиков начальной загрузки, System или Common class, потому что Valve определения обрабатываются ДО создания отдельных загрузчиков классов webapp: контекст должен быть обработан до того, как веб-приложение станет доступным.

Упакуйте свой клапан в отдельный файл jar и скопируйте его в $CATALINA_HOME/lib папку, и все должно быть готово.

Комментарии:

1. Это то, что я подумал. Спасибо!