[英]Jersey + Guice + Tomcat producing 404 when served with something other than root directory
我有一个看起来像这样的资源:
@Path("/Resources/Console")
public class ConsoleResource {
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public String post(/* */) {
/* */
}
}
每当按以下方式配置我的JerseyServletModule时,服务就会工作:
@Override
protected void configureServlets() {
bind(ConsoleResource.class);
bind(MessageBodyReader.class).to(JacksonJsonProvider.class);
bind(MessageBodyWriter.class).to(JacksonJsonProvider.class);
serve("/*").with(GuiceContainer.class);
}
但是诸如index.html之类的东西却没有。 将"/*"
更改为"/Resources/*"
会使index.html之类的东西再次工作,但是ConsoleResource
的@POST
方法不起作用(每次访问/Resources/Console
时,我都会得到404)。 我想我想让后者工作(像这样 )。 有什么想法吗?
谢谢!
问题最终是服务器通过各种过滤器等运行静态内容。 通过将web.xml文件编辑为以下内容:
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/Resources/*</url-pattern>
</filter-mapping>
并且遵循约定,即我的资源将/Resources/
作为其路径的前缀,静态内容通过Guice过滤器获取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.