Tomcat不提供静态文件

时间:2013-06-06 09:01:59

标签: java tomcat gradle web.xml gradle-tomcat-plugin

我在这一条绳子的尽头。我试图获得一个超级简单的webapp,我似乎无法让tomcat不是404静态文件。

  • 我正在使用tomcat版本7.0.39
  • 的gradle tomcat插件
  • 我的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 个答案:

答案 0 :(得分:4)

web.xml / servlet-mapping中使用的URL模式通常有点简单。我认为在你的情况下,Resteasy的/ *模式将作为一个包罗万象,所以没有其他映射真的重要。

为了进行调试,我建议您完全删除Resteasy-servlet,看看是否可以使用映射从自定义URL中为静态文件提供服务。 如果可行,请重新启用Resteasy,但使用不同的URL模式(例如/ rest / *)。

如果有效,那么一切都运行正常,只是/ *的URL映射阻止了其他任何工作。

最简单的解决方案可能是默认服务器静态文件(无映射),并从其他URL提供rest-stuff。

或者使用两个网络应用。一个具有上下文根“/ static”,一个具有上下文根“/".