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>
Run Code Online (Sandbox Code Playgroud)所以我以为这个设置会映射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 次 |
最近记录: |