package com.github.diegopacheco.netflix.pocs.governator.web.jersey; import java.util.Map; import java.util.function.UnaryOperator; import javax.inject.Named; import javax.inject.Singleton; import javax.ws.rs.GET; import javax.ws.rs.Path; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.util.Modules; import com.netflix.governator.InjectorBuilder; import com.netflix.governator.LifecycleInjector; import com.netflix.governator.ShutdownHookModule; import com.netflix.governator.guice.jersey.GovernatorJerseySupportModule; import com.netflix.governator.guice.jersey.GovernatorServletContainer; import com.netflix.governator.guice.jetty.DefaultJettyConfig; import com.netflix.governator.guice.jetty.JettyConfig; import com.netflix.governator.guice.jetty.JettyModule; import com.netflix.governator.providers.Advises; import com.sun.jersey.api.core.DefaultResourceConfig; import com.sun.jersey.api.core.ResourceConfig; import com.sun.jersey.guice.JerseyServletModule; public class JerseyMain { @Path("/") @Singleton public static class SimpleResource { public SimpleResource() {} @GET public String work() { return "It Works"; } } public static void main(String[] args) { LifecycleInjector injector = InjectorBuilder .fromModules( new ShutdownHookModule(), Modules.override(new JettyModule()) .with(new AbstractModule() { protected void configure() {} @Provides JettyConfig getConfig() { return new DefaultJettyConfig().setPort(9090); } }), new GovernatorJerseySupportModule(), new JerseyServletModule() { @Override protected void configureServlets() { serve("/*").with(GovernatorServletContainer.class); } @Advises @Singleton @Named("governator") UnaryOperator<DefaultResourceConfig> getResourceConfig() { return config -> { Map<String, Object> props = config.getProperties(); props.put(ResourceConfig.FEATURE_DISABLE_WADL, "false"); config.getClasses().add(SimpleResource.class); return config; }; } } ).createInjector(); System.out.println(injector); } }