gpt4 book ai didi

java - Jersey + Guice + Tomcat 在与根目录以外的其他内容一起提供时生成 404

转载 作者:行者123 更新时间:2023-11-28 23:45:46 24 4
gpt4 key购买 nike

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

@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)。我想我想让后者工作(比如 this )。想法?

谢谢!

最佳答案

问题最终是服务器通过各种过滤器和诸如此类的东西运行静态内容。通过将 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 过滤器。

关于java - Jersey + Guice + Tomcat 在与根目录以外的其他内容一起提供时生成 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com