Развертывание веб-приложений под встроенным Tomcat 7.0.32

Мы успешно использовали Tomcat 7.0.19 во встроенном режиме. Однако недавно из-за некоторых исправлений в нашей области мы решили перейти на tomcat 7.0.32. Большинство вещей работает так, как ожидалось, с тем же кодом и более новой версией, однако развертывание войны по какой-то причине не сработало. У меня есть пара сервлетов, зарегистрированных в моем коте. Столкнувшись с двумя проблемами,

  1. Что-то изменилось с 7.0.19 на 7.0.32 из встроенного поведения tomcat. Чтобы подробно рассказать об этом, позвольте мне объяснить разницу в поведении: с 7.0.19 я мог развернуть свое приложение, и когда я нажимал «host: port / contextpath», он загружал стартовую страницу приложения (т.е. страницу приветствия, эта страница ориентирована на пользовательский интерфейс и не требует вмешательства сервера, поэтому ни один из моих сервлетов не вызывается). Однако с 7.0.32 тот же URL-адрес приводит к вызову моего сервлета.

  2. Итак, чтобы отладить проблему, я прокомментировал большую часть своего кода, чтобы у меня была реализация vanilla tomcat, только самые простые вещи, то есть установка имени движка, хоста по умолчанию, настройка свойств хоста, добавление коннектора (nio, со свойствами по умолчанию) и разворачивая войну. Никаких сервлетов и прочего, просто чтобы проверить, работают ли самые простые вещи. К моему удивлению, когда я запускал этот код, он все еще не работал с той же проблемой в моем сервлете, как это произошло, теперь, когда мой код прокомментирован, он не регистрирует никаких сервлетов, но откуда он его находит? Сохраняет ли встроенный tomcat некоторые старые ссылки, которые не очищаются при последующих запусках? Я попытался сменить порт, но это тоже не помогло.

Я упираюсь в стену здесь, не в состоянии понять это странное поведение, если я выясню № 2, только тогда я смогу добиться некоторого прогресса в № 1.

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

Викрам


person Victor    schedule 28.10.2012    source источник
comment
Можете ли вы опубликовать соответствующие части вашего кода? Я бы сказал, что невозможно помочь, не глядя на код (web.xml и, возможно, сервлет).   -  person home    schedule 28.10.2012
comment
Пожалуйста, попробуйте определить фактическую версию, которая привела к описанному выше поведению. Изучите версии между 7.0.20 и 7.0.31, это не так уж и много работы с использованием методологии двоичного поиска.   -  person Tomasz Nurkiewicz    schedule 28.10.2012


Ответы (1)


Разобрался, в чем были проблемы.

В обратном порядке,

2 - На самом деле это было странное поведение с ванильным встроенным кодом tomcat, который также запускал сервлеты, которые никогда не были зарегистрированы. Проблема здесь была с eclipse, по какой-то причине он взял старую ссылку моего класса. В тот момент, когда я запустил тот же код из-за пределов eclipse, то есть через командную строку, все вернулось к норме.

1 - Эта проблема была связана с веб-развертыванием, в моем коде я дополнительно устанавливал загрузчик классов в WebappLoader и, в конечном итоге, добавлял в него свои jar-файлы приложений. Это по каким-то причинам отлично работало с 7.0.19, но не с 7.0.32, в тот момент, когда я перенес все свои банки для загрузки во время запуска приложения через путь к классам, эта проблема тоже была решена.

Спасибо,

Вики

person Victor    schedule 30.10.2012