在这件事上我已经穷途末路了。我试图得到一个超级简单的webapp了,我似乎不能让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条答案
按热度按时间gjmwrych1#
web.xml/servlet-mapping中使用的url模式通常有点简单化。我认为在您的例子中,resteasy的/模式将作为一个包罗万象的模式来工作,因此其他Map都不重要。
为了进行调试,我建议您完全删除resteasyservlet,并查看是否可以使用Map从自定义url为静态文件提供服务器。如果可行,请重新启用resteasy,但使用不同的url模式(例如/rest/)。
如果可以的话,那么一切都很好,只是/*的urlMap阻止了其他任何东西的工作。
最简单的解决方案可能是按照默认值(无Map)为静态文件提供服务器,并从另一个url提供rest内容。
或者使用两个web应用程序。一个是context root“/静态”,一个是context root“/”。