我有一个看起来像这样的资源:
@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
的{{1}}方法无效(每当我访问时,我都会获得404) @POST
)。我假设我想让后者工作(如this)。想法?
谢谢!
答案 0 :(得分:0)
问题最终是服务器通过各种过滤器运行静态内容等等。通过将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过滤器。