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", другой с контекстным корнем "/".