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