Почему Tomcat 7 добавляет index.html к URL-адресам, а Tomcat 6 - нет? - PullRequest
3 голосов
/ 02 февраля 2012

Я пытаюсь обновить существующее веб-приложение Java с Tomcat 6 (6.0.32) до Tomcat 7 (7.0.23) .Он построен с использованием Spring MVC и Tiles.

Большая часть приложения прекрасно работает в Tomcat 7 без каких-либо изменений в коде или конфигурации.Единственная проблема заключается в том, что домашняя страница не работает: Tomcat 7 отображает нашу стандартную страницу 404 вместо домашней страницы.Другие страницы на сайте выглядят нормально.

Журналы показывают, что проблема в том, что что-то - предположительно Tomcat - добавляет index.html к запросу домашней страницы.Другими словами, когда я перехожу на URL http://localhost/, веб-приложение обрабатывает его как http://localhost/index.html. Это не работает, потому что у нас нет index.html, домашняя страница генерируется динамическии предназначен для обработки Spring MVC.

Некоторые журналы иллюстрируют проблему.Вот первые несколько строк журнала отладки при попадании на домашнюю страницу:

Tomcat 6

17:42:00.768 [TP-Processor3] DEBUG o.s.s.web.util.AntPathRequestMatcher     - Checking match of request : '/'; against '/ws/**'
17:42:00.769 [TP-Processor3] DEBUG o.s.security.web.FilterChainProxy        - / at position 1 of 11 in additional filter chain; firing Filter: 'ChannelProcessingFilter'
17:42:00.769 [TP-Processor3] DEBUG o.s.s.web.util.AntPathRequestMatcher     - Checking match of request : '/'; against '/login'
17:42:00.769 [TP-Processor3] DEBUG o.s.s.web.util.AntPathRequestMatcher     - Checking match of request : '/'; against '/login-process'
17:42:00.769 [TP-Processor3] DEBUG o.s.s.web.util.AntPathRequestMatcher     - Checking match of request : '/'; against '/'
17:42:00.769 [TP-Processor3] DEBUG o.s.s.w.a.c.ChannelProcessingFilter      - Request: FilterInvocation: URL: /; ConfigAttributes: [REQUIRES_INSECURE_CHANNEL]
17:42:00.770 [TP-Processor3] DEBUG o.s.security.web.FilterChainProxy        - / at position 2 of 11 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'

Tomcat 7

17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/index.html'; against '/ws/**'
17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.security.web.FilterChainProxy - /index.html at position 1 of 11 in additional filter chain; firing Filter: 'ChannelProcessingFilter'
17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/index.html'; against '/login'
17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/index.html'; against '/login-process'
17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.s.web.util.AntPathRequestMatcher - Checking match of request : '/index.html'; against '/'
17:39:47.462 [ajp-bio-18009-exec-2] DEBUG o.s.security.web.FilterChainProxy - /index.html at position 2 of 11 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'

Насколько я могу судить, Tomcat 6 и Tomcat 7 настроены одинаково, что позволяет вносить изменения в некоторые конфигурации по умолчанию между версиями.Я дважды проверил, что <welcome-file-list> одинаков в каждом.

Так что может быть причиной добавления index.html к URL-адресу в Tomcat 7?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2012

Ответ состоял в том, чтобы удалить index.html из элемента <welcome-file-list> в web.xml в WAR.т.е.:

Сломанный web.xml:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

Рабочий web.xml:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Действительностранная вещь в том, что если оставить индекс . jsp , он никогда не заставит Tomcat 7 трактовать http://localhost/ как http://localhost/index.jsp - он имеет толькопроблемы с index. html .

Так что это исправлено, но, на самом деле, я понятия не имею, почему это работает.

0 голосов
/ 17 октября 2012

Я столкнулся почти с той же проблемой, я использую встроенный Tomcat для развертывания веб-приложения.Я поместил файл "aaa.html" в список файлов приветствия.Но когда я запускаю tomcat и захожу в веб-приложение по URL-адресу "http://localhost:8080/appname/", tomcat попытается вернуть index.jsp (который также существует в моем приложении) вместо aaa.html. Чтобы показать указанную мной страницу приветствия aaa.HTML, я должен добавить еще один index.html и позволить index.html перенаправить в aaa.html, как показано ниже:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>   <-- added for tomcat 7
    <welcome-file>aaa.html</welcome-file>
</welcome-file-list>
...