0
Есть ли способ заставить Jetty использовать класс ApplicationConfig, чтобы указать, какие ресурсы будут включены в приложение?Программно использовать класс ApplicationConfig для указания ресурсов REST в Jetty Embedded
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();
}