Недавно я обновил свой сервер Tomcat с версии 6.x до самой последней версии 7.x.
У меня возникли небольшие проблемы, в надежде получить помощь.
У меня есть приложение, которое вызывает MyApp
На tomcat6, когда я заходил на http://www.example.com/MyApp/page/, я обычно получал желаемый результат.
Теперь, на tomcat7, посещая тот же самый точный URL (с завершающей косой чертой), я получаю ошибку: «Ресурс недоступен», так как tomcat считает, что / MyApp / page / - это целое имя веб-приложения, а не имена запросов страница под веб-приложением MyApp.
Мне нужна косая черта в конце моего URL, потому что в противном случае я получаю сообщение об ошибке: «HTTP Status 405 - Метод запроса« GET »не поддерживается», и это нормально, потому что я действительно не разрешил метод GET для запроса «page» ,
Если кто-то знает, как сообщить tomcat, что косая черта после пути существующего веб-приложения не должна предполагать, что перенаправить его на новые вызовы веб-приложения целиком «строка» и просто обработать запрос, как на tomcat6, было бы здорово!
web.xml
который сопоставлен с/*
? В противном случае tomcat использует список файлов приветствия. Обычно только первый сегмент пути интерпретируется как корень контекста. Таким образом, проблема не в том, чтобы найти ваше веб-приложение.MyApp
веб-приложение с именем, tomcat будет использовать этот контекст веб-приложения, используя оставшийся путьpage/
. Если нет, он будет искатьROOT
контекст, используя полный путь для поиска.Ответы:
Древний вопрос, но, поскольку я недавно боролся с завершающей косой чертой в Tomcat 8, я знаю, что проблемы со косой чертой продолжают преследовать мир пользователей Tomcat. :-)
Возможно, вы столкнетесь с изменениями в способе, которым Tomcat обрабатывает перенаправления при загрузке корневого контекста. Проверьте ошибку 58660 и прочитайте некоторые обсуждения разработчиков там. Возможно, вам придется отключить отображение по умолчанию, изменив
mapperContextRootRedirectEnabled
атрибутContext
элемента вconf/context.xml
.источник
Проверьте ваш список файлов приветствия .. что следует за спекуляцией ...
Я считаю, что суть проблемы заключается в том, что Tomcat представлен с / - у него есть несколько опций - перебрать список файлов приветствия - при отсутствии чего-либо - показать список каталогов (если он включен)
Здесь начинается самое интересное ... Многие хотят использовать * .do для таких вещей, как распорки. Поэтому они хотят, чтобы index.do была домашней страницей. Также распространенным является index.jsp, где * .jsp сопоставляется с JspServlet.
Здесь все становится веселее. Допустим, ваши приветственные файлы - index.jsp, index.do.
Tomcat (IIRC) сначала выполняет перебор списка файлов приветствия в поисках ресурсов с таким именем.
Затем он выполнит второй проход, ища сопоставления, которые соответствуют. Так что если index.jsp указан в списке приветствий и * .jsp отображается. Затем tomcat попытается переадресовать на index.jsp, и вы получите 404.
Так что я собираюсь догадаться, что у вас есть отображение сервлета и перекрытие файла приветствия. И поведение этого сервлета не поддерживает GET. (Отсюда 405)
источник
Если в вашем проекте используется динамический веб-модуль версии 2.2, вам нужно явно создать хотя бы один файл (может быть пустым html-файлом), присутствующий в файле web.xml (например, index.html) в вашем WebContent.
источник