Могу ли я запустить код перед загрузкой класса сервлета на Tomcat? - PullRequest
3 голосов
/ 06 января 2012

Я выполняю некоторые манипуляции с байт-кодом во время выполнения над некоторыми из моих бизнес-объектов, и очень важно, чтобы они были загружены в правильном порядке. В настоящее время я просто вызываю Class.getSimpleName () для них в правильном порядке в моем загрузочном сервлете. Это работало просто отлично, но если есть лучший способ, у меня все уши.

Однако теперь мне нужен метод в одном из моих фильтров сервлетов для возврата конкретного типа бизнес-объекта. Это приводит к тому, что загрузчик классов сначала загружает этот конкретный класс бизнес-объектов (выходит из строя), и все обрывается.

Мне бы хотелось, чтобы я мог запустить мой хак getSimpleName () до того, как загрузит любой из моих сервлетов или фильтров. Есть ли место, где я могу поместить код, который запускается до того, как загрузчик классов даже загрузит мои фильтры?

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Да, вы можете.

Посмотрите на ServletContextListener .

1 голос
/ 06 января 2012

Загрузчик класса tomcat работает таким образом.

enter image description here

если вы хотите загрузить какие-либо классы до загрузки любого из ваших классов веб-приложений, то вы можете поместить эти классы в файл jar и развернуть его в общей библиотеке tomcat, эти классы будут загружены до загрузки классов вашего веб-приложения загрузчиком класса.

Вы можете проверить документацию о том, как работает загрузчик классов Apache Tomcat здесь

...