以编程方式使用ApplicationConfig类来指定Jetty Embedded下的REST资源

时间:2015-10-24 14:39:24

标签: java rest annotations embedded-jetty

有没有办法让Jetty使用我的ApplicationConfig类来指定要包含在应用程序中的资源?

ApplicationConfig.java:

  @javax.ws.rs.ApplicationPath("api")
public class ApplicationConfig extends Application {

  @Override
  public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new java.util.HashSet<>();
    addRestResourceClasses(resources);
    return resources;
  }

  /**
   * Do not modify addRestResourceClasses() method.
   * It is automatically populated with
   * all resources defined in the project.
   * If required, comment out calling this method in getClasses().
   */
  private void addRestResourceClasses(Set<Class<?>> resources) {
    resources.add(rest.Admin.class);
    resources.add(rest.User.class);
    resources.add(security.JWTAuthenticationFilter.class);
    resources.add(security.Login.class);
    resources.add(security.NotAuthorizedExceptionMapper.class);
    resources.add(security.RolesAllowedFilter.class);
  }

}

我的helloWorld码头示例: 请注意,此示例使用ApplicationConfig,而是使用setInitParameter方法。

public static void main(String[] args) throws Exception {

        Server server = new Server(8080);

        ServletHolder servletHolder = new ServletHolder(org.glassfish.jersey.servlet.ServletContainer.class);  
        servletHolder.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");  
        servletHolder.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "rest");//Set the package where the services reside  
        servletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");  
        ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        server.setHandler(contextHandler);  
        contextHandler.addServlet(servletHolder, "/api/*");  

        server.start();
        server.join();
    }

1 个答案:

答案 0 :(得分:0)

结束使用Application.java配置文件启动应用程序:

public static void main(String[] args) throws Exception {


        Server server = new Server(8082);

        ServletHolder servletHolder = new ServletHolder(org.glassfish.jersey.servlet.ServletContainer.class);  
        servletHolder.setInitParameter("javax.ws.rs.Application", ApplicationConfig.class.getName() );
        ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);  
         contextHandler.setContextPath("/");
         contextHandler.addServlet(servletHolder, "/*");
        server.setHandler(contextHandler);

        server.start();
        server.join();

    }