繁体   English   中英

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

[英]Jersey Jetty Embedded Won't Read Path Annotation, Error 404

请帮助我,我在这里疯了。

所以我试图在嵌入式码头(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();
    }
}

此处不起作用的一件事是,即使我在参数中设置了球衣追踪,也似乎无法正常工作。

我在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(“ /”)更改为其他路径,则它将为包括http:// localhost:8080 /的任何URL返回错误404。 我尽了所有我能想到的原因但无济于事的尝试,这真令人沮丧。 我在这里想念什么吗?

谢谢...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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