Пользовательский клапан Tomcat, содержащийся в файле WAR веб-приложения - PullRequest
6 голосов
/ 26 мая 2011

Я собираюсь реализовать собственный Valve и настроить его с помощью META-INF / context.xml.

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

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

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

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

1 Ответ

8 голосов
/ 26 мая 2011

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

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

...