代码之家  ›  专栏  ›  技术社区  ›  Alessandro Argentieri

Jersey JAX-RS在嵌入式Jetty上注册更多控制器

  •  1
  • Alessandro Argentieri  · 技术社区  · 7 年前

    我正在尝试使用Jersey JAX-RS实现restfulweb服务。

    我基于这个例子: https://nikgrozev.com/2014/10/16/rest-with-embedded-jetty-and-jersey-in-a-single-jar-step-by-step/

    @Path("/entry-point")
    public class EntryPoint {
    
      @GET
      @Path("test")
      @Produces(MediaType.TEXT_PLAIN)
      public String test() {
        return "Test";
      }
    }
    

    jersey.config.server.provider.classnames “具体如下:

    public class App {
    
      public static void main(String[] args) throws Exception {
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");
    
        Server jettyServer = new Server(8080);
        jettyServer.setHandler(context);
    
        ServletHolder jerseyServlet = context.addServlet(
             org.glassfish.jersey.servlet.ServletContainer.class, "/*");
        jerseyServlet.setInitOrder(0);
    
        // Tells the Jersey Servlet which REST service/class to load.
    
        jerseyServlet.setInitParameter(
           "jersey.config.server.provider.classnames",
           EntryPoint.class.getCanonicalName());
    
        try {
            jettyServer.start();
            jettyServer.join();
        } finally {
            jettyServer.destroy();
        }
      }
    }
    

    如何注册多个控制器?

    如果我添加其他控制器类作为参数,我不知道我必须给每个类指定什么键名,因为 jersey.config.server.provider.classnames “好像工作过,也工作过一次。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Paul Samsotha    7 年前

    由于该属性只能使用一次,因此需要使用逗号分隔的列表作为值 classOne, classTwo, classThree .

    另一种选择是使用属性 jersey.config.server.provider.packages 给它一个包递归扫描

    jerseyServlet.setInitParam(ServerProperties.PROVIDER_PACKAGES, "my.package.to.scan");
    

    看到了吗 ServerProperties 有关更多可设置的属性。在这里 PROVIDER_PACAKGES 是一个常量,其字符串值为 jersey.config.server.provider.packages包 classnames 有一个常数 PROVIDER_CLASSNAMES .

    通过声明要扫描的包,Jersey将扫描该包 递归地 @Path @Provider 它在扫描中找到的带注释的类。

    推荐文章