0

我有一个看起来像这样的资源:

@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方法不起作用(每当我访问 404 时,我都会得到一个 404 /Resources/Console)。我假设我想让后者工作(像这样)。想法?

谢谢!

4

1 回答 1

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 过滤器。

于 2013-01-31T22:43:18.343 回答