繁体   English   中英

Jersey + Guice + Tomcat与根目录以外的目录一起使用时产生404

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM