Chr*_*ris 4 java tomcat web.xml gradle gradle-tomcat-plugin
我在这件事上已经束手无策了。我试图建立一个超级简单的网络应用程序,但我似乎无法让 tomcat 不出现 404 静态文件。
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 插件中的某些约定的问题吗?
web.xml/中使用的 URL 模式servlet-mapping通常有点简单。我认为在你的情况下,/* Resteasy 的模式将作为一个包罗万象的模式,因此其他映射都不会真正重要。
为了进行调试,我建议您完全删除 Resteasy-servlet,并查看是否可以通过映射从自定义 URL 提供静态文件。如果有效,请重新启用 Resteasy,但使用不同的 URL 模式(例如/rest/*)。
如果这有效,那么一切都工作正常,只是 URL 映射阻止了/*其他任何事情的工作。
最简单的解决方案可能是按照默认设置提供静态文件(无映射),并从另一个 URL 提供剩余内容。
或者使用两个网络应用程序。一种具有上下文根/static,一种具有上下文根/。
| 归档时间: | 
 | 
| 查看次数: | 12117 次 | 
| 最近记录: |