Вопрос: Tomcat 7 проблема с конечной косой чертой с webapps


Недавно я обновил мой сервер tomcat с версии 6.x до самой последней версии 7.x.

Я придумал небольшую проблему, надеясь получить помощь.

У меня приложение вызывает MyApp

На tomcat6, когда я пошел http://www.example.com/MyApp/page/ Обычно я получаю желаемый результат.

Теперь, на tomcat7, посетив тот же самый точный url (с завершающей косой чертой), я получаю сообщение об ошибке: «Ресурс недоступен», поскольку tomcat считает, что / MyApp / page / является целым именем webapp вместо имен запросов на странице под MyApp webapp.

Мне нужно слэш в конце на моем URL-адресе, потому что в противном случае я получаю сообщение об ошибке: «HTTP Status 405 - метод запроса« GET »не поддерживается», что нормально, потому что я действительно не разрешал метод GET к запросу «страница» ,

Если кто-то знает, как сказать tomcat, что завершающий слэш после пути существующего webapp не должен допускать перенаправление его на новый webapp, вызывает всю «строку» и просто обрабатывает запрос, как на tomcat6, было бы здорово!


11
2017-10-24 14:12


Источник


Существует ли сервлет по умолчанию в web.xml который отображается на /*? В противном случае tomcat использует список приветственных файлов. Обычно только первый сегмент пути интерпретируется как корень контекста. Так что не найти ваш webapp, похоже, не проблема. - mana
первый сегмент пути является корнем контекста и действительно работает, он находит его, но следующие пути вместо того, чтобы быть частью первого пути, tomcat ищет webapp со всем путем. У меня нет ничего, что настраивается, не по умолчанию ..
Я не понимаю, что вы говорите. Сожалею. Если у вас есть webapp, настроенный с именем MyApp то tomcat будет использовать этот контекст веб-приложения, используя оставшийся путь page/, Если нет, он будет искать ROOT контекст, используя полный путь для поиска. - mana
У меня есть webapp вызывает MyApp и example.com/MyApp работает, но при посещении example.com/MyApp/foo вместо поиска содержимого foo внутри MyApp, он ищет веб-приложение, которое вызывает «MyApp / foo /» и не ищет контент под вызовами MyApp foo ..
Попробуй это: stackoverflow.com/q/11055608/1031900


Ответы:


Проверьте свой список приветственных файлов .. что следует за спекуляцией ...

Я считаю, что суть проблемы заключается в том, что Tomcat представлен с / - он имеет несколько вариантов - Итерации по списку файлов приветствия - Ничего не существует - покажите список каталогов (если включено)

Здесь начинается веселье ... Многие люди хотят использовать * .do для таких вещей, как стойки. Поэтому они хотят, чтобы index.do была домашней страницей. Или же общий индекс index.jsp, где * .jsp отображается в JspServlet.

Вот где все становится весело. Так что скажем, что ваши файлы приветствия - index.jsp, index.do.

То, что делает Tomcat (IIRC), сначала перебирает список файлов приветствия, ища ресурсы этого имени.

Затем он выполнит второй проход, который ищет сопоставления. Поэтому, если index.jsp указан в списке приветствия и отображается * .jsp. Затем tomcat попытается переслать index.jsp, и вы получите 404.

Поэтому я собираюсь угадать, что у вас есть отображение сервлетов и приветствие перекрытия файлов. И поведение этого сервлета не поддерживает GET. (Отсюда 405)


0
2017-11-01 13:48





Если ваш проект использует динамический веб-модуль v2.2, вам нужно явно создать по крайней мере один файл (может быть пустой html-файл), присутствующий в web.xml (например: index.html) в вашем WebContent.


0
2017-11-13 10:13



это комментарий; не ответ; пожалуйста, подумайте о комментировании в будущем, когда вы получите больше очков. благодаря - Hrvoje Špoljar


Древний вопрос, но поскольку я недавно сражался с завершающим слом в Tomcat 8, я знаю, что проблемы со слэшем продолжают поражать мир пользователей Tomcat. :-)

То, что вы можете столкнуться, - это изменения в способе, которым Tomcat обрабатывает перенаправления при загрузке корневого контекста. Проверять, выписываться ошибка 58660 и прочитайте некоторые обсуждения разработчиков. Возможно, вам придется отключить картографию по умолчанию, изменив mapperContextRootRedirectEnabled атрибут Context элемент в conf/context.xml,


0
2017-11-28 22:41