#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. Это то, что я подумал. Спасибо!