gpt4 book ai didi

java - Jersey Jetty Embedded 无法读取路径注释,错误 404

转载 作者:行者123 更新时间:2023-11-30 03:09:11 26 4
gpt4 key购买 nike

请帮帮我,我快疯了..

所以我尝试在嵌入式 jetty (9.2.14.v20151106)中使用 Jersey (2.22.1),并使用非常简单的主应用程序,如下所示:

public class MainApp{
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);

ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "etc.mypackage");
sh.setInitParameter(ServerProperties.PROVIDER_SCANNING_RECURSIVE, "true");
sh.setInitParameter(ServerProperties.TRACING, "ALL");
sh.setInitParameter("jersey.config.server.tracing", "ALL");
sh.setInitOrder(1);
sh.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
context.addServlet(sh, "/");
server.start();
server.join();
}
}

这里不起作用的一件事是,即使我在参数中设置了 Jersey 追踪,它似乎也不起作用。

我在 etc.mypackage.servlets 处有 2 个 servlet:

@Path("/")
public class TestServlet {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String testString){ return "TestServlet.class; }

@Path("test1")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getString(){
String test = "TestServlet.class second method called";
return test;
}
}

另一个具有相同的功能,但具有不同的路径和调试字符串:

@Path("/2")
public class TestServlet2 {
@Path("/test1")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String testString){ return "TestServlet2.class; }

@Path("test2")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getString(){
String test = "TestServlet2.class second method called";
return test;
}
}

这些代码运行并且如果在 http://localhost:8080/ 中调用它 它将从该类的第一个方法返回一个纯文本 TestClass.class ,但是如果我在链接中添加更多路径,它只会返回相同的字符串,并且没有办法我可以调用它来显示 TestServlet 类或 TestServlet2 的第二个方法。

但是,如果将 TestServlet 的路径从 @Path("/") 更改为除此以外的任何路径,则对于包含 < 的任何 URL,它只会返回错误 404强>http://localhost:8080/ 。我尝试了所有我能想到的原因,但都无济于事,这真是令人沮丧。我在这里错过了什么吗?

谢谢...

最佳答案

这里 context.addServlet(sh, "/"); 您正在告诉要匹配什么路径来访问 servlet。因此,您拥有的唯一访问点是 /。如果您想访问/之后的任何内容”,您应该添加通配符*。所以只需将其更改为 .addServlet(sh, "/*");

关于java - Jersey Jetty Embedded 无法读取路径注释,错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991865/

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