package com.netflix.eureka; import com.netflix.discovery.guice.EurekaModule; import com.netflix.eureka.guice.Ec2EurekaServerModule; import com.netflix.eureka.guice.LocalDevEurekaServerModule; import com.netflix.governator.InjectorBuilder; import com.netflix.governator.LifecycleInjector; import com.netflix.governator.ProvisionDebugModule; import com.sun.jersey.api.core.PackagesResourceConfig; import com.sun.jersey.guice.JerseyServletModule; import com.sun.jersey.guice.spi.container.servlet.GuiceContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; /** * @author David Liu */ public class EurekaInjectorCreator { private static final Logger logger = LoggerFactory.getLogger(EurekaInjectorCreator.class); public static LifecycleInjector createInjector() { try { return InjectorBuilder .fromModules( new EurekaModule(), new Ec2EurekaServerModule(), new ProvisionDebugModule(), new JerseyServletModule() { @Override protected void configureServlets() { filter("/*").through(StatusFilter.class); filter("/*").through(ServerRequestAuthFilter.class); filter("/v2/apps", "/v2/apps/*").through(GzipEncodingEnforcingFilter.class); //filter("/*").through(RateLimitingFilter.class); // enable if needed // REST Map<String, String> params = new HashMap<String, String>(); params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "com.sun.jersey"); params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "com.netflix"); params.put("com.sun.jersey.config.property.WebPageContentRegex", "/(flex|images|js|css|jsp)/.*"); params.put("com.sun.jersey.spi.container.ContainerRequestFilters", "com.sun.jersey.api.container.filter.GZIPContentEncodingFilter"); params.put("com.sun.jersey.spi.container.ContainerResponseFilters", "com.sun.jersey.api.container.filter.GZIPContentEncodingFilter"); filter("/*").through(GuiceContainer.class, params); bind(GuiceContainer.class).asEagerSingleton(); } } ) .createInjector(); } catch (Exception e) { logger.error("Failed to create the injector", e); e.printStackTrace(); throw new RuntimeException(e); } } }