2015-10-24 63 views
0

有什麼辦法可以讓Jetty使用我的ApplicationConfig類來指定哪些資源包含在應用程序中?Programmtivally使用ApplicationConfig類來指定Jetty嵌入式下的REST資源

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(); 
    } 

回答

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(); 

    }