Tomcat 7 із заниженою косою випуском із веб-сайтами


13

Нещодавно я оновив свій сервер tomcat з версії 6.x до останньої версії 7.x.

Я придумав невеликі клопоти, сподіваючись отримати допомогу.

У мене програма називає MyApp

У tomcat6, коли я перейшов на сторінку http://www.example.com/MyApp/page/, зазвичай отримав бажаний результат.

Тепер, на tomcat7, відвідуючи той самий точний URL (з кінцевою косою рисою), я отримую помилку: "Ресурс недоступний", оскільки tomcat вважає, що / MyApp / page / - це ціле ім'я webapp, а не імена запиту сторінка під веб-сайтом MyApp.

Мені потрібна коса риса в кінці моєї URL-адреси, оскільки в іншому випадку я отримую помилку: "HTTP Status 405 - метод запиту 'GET' не підтримується", що в порядку, оскільки я дійсно не дозволив методу GET на запит "сторінки" .

Якщо хтось знає, як сказати tomcat, що кінцевий косий ривок після шляху існуючого веб-сайту не повинен припускати, щоб перенаправити його на новий виклик webapp цілою "рядком" і просто обробити запит, як на tomcat6, було б чудово!


Чи є сервлет за замовчуванням у тому, web.xmlщо відображено /*? В іншому випадку tomcat використовує список вітальних файлів. Зазвичай лише перший сегмент шляху є інтерпредметом як корінь контексту. Отож, не знайти проблему з веб-сайтом, здається, не проблема.
мана

перший сегмент шляху - це контекстний корінь і дійсно працює, він його знаходить, але наступні шляхи замість того, щоб бути частиною першого шляху, tomcat шукає webapp з усім контуром. У мене немає нічого, що налаштовує це не за замовчуванням ..

Я не дуже розумію те, що ти кажеш. Вибачте. Якщо у вас налаштований веб-сервер з ім'ям, MyAppто tomcat буде використовувати цей контекст веб-програми, використовуючи шлях, що залишився page/. Якщо ні, то він шукатиме ROOTконтекст, використовуючи повний шлях для пошуку.
мана

У мене є Webbapp-дзвінки MyApp і example.com/MyApp працює, але, відвідуючи example.com/MyApp/foo замість того, щоб шукати вміст foo всередині MyApp, він шукає веб-сторінку, яка називає "MyApp / foo /", і не шукає вміст під MyApp закликає foo ..

2
Спробуйте це: stackoverflow.com/q/11055608/1031900

Відповіді:


1

Стародавнє питання, але оскільки я нещодавно боровся із закінчувальною косою рисою в Tomcat 8, я знаю, що проблеми з косою рисою продовжують відчувати мир користувачів Tomcat. :-)

Те, що ви можете зіткнутися, - це зміни в способі, який обробляє переадресація Tomcat під час завантаження кореневого контексту. Перевірте помилку 58660 та прочитайте там деякі обговорення розробника. Можливо, вам потрібно буде вимкнути відображувач за замовчуванням, змінивши mapperContextRootRedirectEnabledатрибут Contextелемента в conf/context.xml.


0

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

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

Ось, з чого починаються веселощі ... Багато людей хочуть використовувати * .do для таких речей, як стрижки. Тому вони хочуть, щоб index.do було домашньою сторінкою. Або також загальним є index.jsp, де * .jsp відображається в JspServlet.

Ось де все розважається. Тож скажемо, що вашими вітальними файлами є index.jsp, index.do.

Що робить Tomcat (IIRC), це спочатку повторити список вітальних файлів, шукаючи ресурси цього імені.

Тоді він зробить другий прохід, шукаючи відображення, які відповідають. Отже, якщо index.jsp вказаний у вітальному списку і * .jsp відображений. Тоді tomcat спробує переслати на index.jsp, і ви отримаєте 404.

Тож я здогадуюсь, що у вас є відображення сервлетів та перекриття файлів привітання. І поведінка цього сервлета не підтримує GET. (Звідси 405)


0

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


1
це коментар; не відповідь; будь ласка, розглядайте коментарі в майбутньому, коли отримаєте більше балів. спасибі
Хрвой Шполяр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.