Tomcat не обслуживает статические файлы

Я в конце моей веревки на этом. Я пытаюсь получить супер простое веб-приложение, и я не могу заставить tomcat не 404 статических файлов.

  • Я использую плагин Gradle Tomcat с версией Tomcat 7.0.39
  • Мой HTML-файл находится на hey-world/src/main/webapp/index.html
  • мой web.xml выглядит так:

    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
        </servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>HeyWorldApplication</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/static/*</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    

Поэтому я думал, что эта установка будет отображать localhost:8080/hey-world/static/index.html в файл, но это 404-е каждый раз. Это проблема с некоторыми соглашениями в плагине Gradle Tomcat?

1 ответ

Решение

Шаблоны URL, используемые в web.xml/servlet-mapping, часто немного упрощены. Я думаю, что в вашем случае шаблон /* для Resteasy будет работать как ловушка, поэтому никакое другое отображение не будет иметь большого значения.

Для отладки я предлагаю вам полностью удалить Resteasy-сервлет и посмотреть, сможете ли вы использовать серверные статические файлы с пользовательского URL-адреса с помощью вашего сопоставления. Если это работает, повторно включите Resteasy, но по другому URL-шаблону (например, /rest/*).

Если это работает, ну, тогда все действительно работает нормально, просто отображение URL для /* блокирует что-либо еще от работы.

Самым простым решением, вероятно, будет сервер статических файлов по умолчанию (без сопоставления) и предоставление остальной части содержимого с другого URL.

В качестве альтернативы используйте два веб-приложения. Один с контекстным корнем "/static", другой с контекстным корнем "/".

Другие вопросы по тегам