@Test(expected = ProvisionException.class) public void testEnforcingRegistrationOnInitFastFail() { Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(BadServerEurekaClientConfig2.class); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new RuntimeException(e); } // this will throw a Guice ProvisionException for the constructor failure EurekaClient client = injector.getInstance(EurekaClient.class); }
@Test public void testNameSpaceInjection() throws Exception { ConfigurationManager.getConfigInstance().setProperty("testnamespace.serviceUrl.default", SERVICE_URI); Injector injector = LifecycleInjector.builder() .withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bind(String.class).annotatedWith(EurekaNamespace.class).toInstance("testnamespace."); } }) .build() .createInjector(); DefaultEurekaClientConfig clientConfig = injector.getInstance(DefaultEurekaClientConfig.class); List<String> serviceUrls = clientConfig.getEurekaServerServiceUrls("default"); assertThat(serviceUrls.get(0), is(equalTo(SERVICE_URI))); }
@Test public void testBackupRegistryInjection() throws Exception { final BackupRegistry backupRegistry = mock(BackupRegistry.class); when(backupRegistry.fetchRegistry()).thenReturn(APPLICATIONS); Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(BadServerEurekaClientConfig1.class); bind(BackupRegistry.class).toInstance(backupRegistry); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); EurekaClient client = injector.getInstance(EurekaClient.class); verify(backupRegistry, atLeast(1)).fetchRegistry(); assertThat(countInstances(client.getApplications()), is(equalTo(1))); }
@Test public void testEurekaClientLifecycle() throws Exception { Injector injector = LifecycleInjector.builder() .withModules( new AbstractModule() { @Override protected void configure() { bind(EurekaInstanceConfig.class).to(LocalEurekaInstanceConfig.class); bind(EurekaClientConfig.class).to(LocalEurekaClientConfig.class); bind(AbstractDiscoveryClientOptionalArgs.class).to(Jersey1DiscoveryClientOptionalArgs.class).in(Scopes.SINGLETON); } } ) .build().createInjector(); LifecycleManager lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); EurekaClient client = injector.getInstance(EurekaClient.class); // Check registration verify(requestHandler, timeout(TIMEOUT_MS).atLeast(1)).register(any(InstanceInfo.class)); // Check registry fetch verify(requestHandler, timeout(TIMEOUT_MS).times(1)).getApplications(); verify(requestHandler, timeout(TIMEOUT_MS).atLeast(1)).getDelta(); assertThat(countInstances(client.getApplications()), is(equalTo(1))); // Shutdown container, and check that unregister happens lifecycleManager.close(); verify(requestHandler, times(1)).cancel(MY_APPLICATION_NAME, MY_INSTANCE_ID); }
@BeforeSuite public void setupEnv() { Properties props = getProps(); try { ConfigurationManager.loadProperties(props); LifecycleInjectorBuilder builder = LifecycleInjector.builder(); builder.withModules( new EurekaModule(), new EVCacheModule(), new ConnectionModule(), new SpectatorModule() ); injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); injector.getInstance(ApplicationInfoManager.class); final EVCacheModule lib = injector.getInstance(EVCacheModule.class); manager = injector.getInstance(EVCacheClientPoolManager.class); } catch (Throwable e) { e.printStackTrace(); log.error(e.getMessage(), e); } }
@Override protected Injector getInjector() { List<Module> moduleList = Lists.newArrayList(); moduleList.add(new JaxServletModule()); moduleList.add(new RaigadGuiceModule()); Injector injector; try { injector = LifecycleInjector.builder().withModules(moduleList).build().createInjector(); startJobs(injector); LifecycleManager manager = injector.getInstance(LifecycleManager.class); manager.start(); } catch (Exception e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(), e); } return injector; }
/** Start up governator with an arbitrary list of modules. */ public void start(Iterable<Module> modules) throws Exception { injector = LifecycleInjector.builder() .ignoringAllAutoBindClasses() .withModules(modules) .build() .createInjector(); LifecycleManager lcMgr = injector.getInstance(LifecycleManager.class); lcMgr.start(); }
/** * Starts the container and hence the embedded jetty server. * * @throws Exception if there is an issue while starting the server */ @PostConstruct public void init() throws Exception { server = new Server(listenPort); Injector injector = LifecycleInjector .builder() .usingBasePackages("com.netflix.explorers") .withModules(new AdminResourcesModule(healthCheckInvocationStrategyProvider)).createInjector(); try { injector.getInstance(LifecycleManager.class).start(); AdminResourcesFilter adminResourcesFilter = injector.getInstance(AdminResourcesFilter.class); adminResourcesFilter.setPackages(coreJerseyPackages); ServletContextHandler handler = new ServletContextHandler(); handler.setContextPath("/"); handler.setSessionHandler(new SessionHandler()); handler.addFilter(LoggingFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); handler.addFilter(RedirectFilter.class, "/*", EnumSet.allOf(DispatcherType.class)); handler.addFilter(new FilterHolder(adminResourcesFilter), "/*", EnumSet.allOf(DispatcherType.class)); handler.addServlet(new ServletHolder(adminResourcesFilter), "/*"); server.setHandler(handler); server.start(); } catch (Exception e) { logger.error("Exception in building AdminResourcesContainer ", e); } }
public void start() { try { logger.info("Starting apollo.."); injector = LifecycleInjector.builder().withModules( new ApolloModule(configurationProvider.get()), new ApolloMyBatisModule(configurationProvider.get().getDatabase()) ).build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); lifecycleManager.start(); logger.info("Apollo started"); } catch (Exception e) { throw new RuntimeException(e); } }
@Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if(annotations.size() == 0) { return false; } LifecycleInjector lifecycleInjector = LifecycleInjector .builder() .withModules(new TorchCompilerModule(this, roundEnv)) .build(); try { lifecycleInjector.getLifecycleManager().start(); } catch (Exception e) { throw new RuntimeException(e); } Injector injector = lifecycleInjector.createInjector(); TorchAnnotationProcessor processor = injector.getInstance(TorchAnnotationProcessor.class); boolean success = processor.process(annotations); lifecycleInjector.getLifecycleManager().close(); return success; }
protected void setup(Module[] modules) { LifecycleInjectorBuilder builder = LifecycleInjector.builder(); builder.withAdditionalModules(modules); // Extensions builder.withAdditionalModules(new ExtensionLoader(!withExt).asModuleArray()); // Admin console if (withAdminUI) { bindConfigurationProvider(builder); bindDashboard(builder); } injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new RuntimeException("Container setup failure", e); } }
} else { adminResourceInjector = LifecycleInjector .builder() .inStage(Stage.DEVELOPMENT) .withMode(LifecycleInjectorMode.SIMULATED_CHILD_INJECTORS)
LifecycleInjectorBuilder builder = LifecycleInjector.builder(); builder.withAdditionalBootstrapModules(bootstrapModules); builder.withModules(PostInjectorModule.forLifecycleInjectorBuilder(builder));
private Injector getInjector() throws ServiceManagerException { Injector injector = LifecycleInjector .builder() .withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bindConfigurationProvider().toInstance(new SystemConfigurationProvider()); } }) .withAdditionalBootstrapModules(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { CompositeConfigurationProvider compositeConfigurationProvider = new CompositeConfigurationProvider(); for (Properties property : getConfigurations()) { compositeConfigurationProvider.add(new PropertiesConfigurationProvider(property)); } binder.bindConfigurationProvider().toInstance(compositeConfigurationProvider); } }) .withModuleClasses(modules.getResources()) .build() .createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new ServiceManagerException("unable to start the lifecycle manager", e); } return injector; }
private Injector getInjector() throws ServiceManagerException { Injector injector = LifecycleInjector .builder() .withBootstrapModule(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bindConfigurationProvider().toInstance(new SystemConfigurationProvider()); } }) .withAdditionalBootstrapModules(new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { CompositeConfigurationProvider compositeConfigurationProvider = new CompositeConfigurationProvider(); for (Properties property : getConfigurations()) { compositeConfigurationProvider.add(new PropertiesConfigurationProvider(property)); } binder.bindConfigurationProvider().toInstance(compositeConfigurationProvider); } }) .withModuleClasses(modules.getResources()) .build() .createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); } catch (Exception e) { throw new ServiceManagerException("unable to start the lifecycle manager", e); } return injector; }
public Builder(final String name, final Logger logger) { this.lifecycleInjectorBuilder = LifecycleInjector.builder() .ignoringAllAutoBindClasses() .withBootstrapModule(bootstrapBinder -> { bootstrapBinder.disableAutoBinding(); bootstrapBinder.requireExactBindingAnnotations(); }); this.configModuleBuilder = new AutoBindConfigModule.Builder(name); this.serviceGraphModuleBuilder = new AutoBindServiceGraphModule.Builder(name, serviceGraph); setName(name); setLogger(logger); setServiceConfig(ConfigFactory.empty()); }
public static void create(AtomicReference<Injector> injector, final Properties properties, Module... modules) throws Exception { // Create the injector injector.set(LifecycleInjector.builder() .withBootstrapModule( new BootstrapModule() { @Override public void configure(BootstrapBinder binder) { binder.bindConfigurationProvider().toInstance( new PropertiesConfigurationProvider(properties)); } } ) .withModules( new RoutingPlugin(), new ServerSinkPlugin(), new SuroInputPlugin(), new SuroDynamicPropertyModule(), new SuroModule(), StatusServer.createJerseyServletModule() ) .withAdditionalModules(modules) .build().createInjector()); }
protected void setup(Module[] modules) { LifecycleInjectorBuilder builder = LifecycleInjector.builder() .withModuleTransformer(new OverrideAllDuplicateBindings()); builder.withAdditionalModules(PostInjectorModule.forLifecycleInjectorBuilder(builder)); builder.withAdditionalModules(modules); // Extensions builder.withAdditionalModules(new ExtensionLoader(!withExt).asModuleArray(serverType)); bindMetricsRegistry(builder); EurekaHealthStatusModule healthStatusModule = new EurekaHealthStatusModule(); builder.withAdditionalModules(healthStatusModule); injector = builder.build().createInjector(); lifecycleManager = injector.getInstance(LifecycleManager.class); try { lifecycleManager.start(); // Admin console if (withAdminUI) { EmbeddedKaryonAdminModule adminUIModule = createAdminUIModule(); webAdminInjector = injector.createChildInjector(adminUIModule); } } catch (Exception e) { throw new RuntimeException("Container setup failure", e); } }
@Test public void inject() throws Exception { Assumptions.assumeTrue(isJava8(), "requires java 8"); // On JDK 9: // Caused by: java.lang.ClassNotFoundException: javax.annotation.Resource // at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) // at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) // at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) Injector injector = LifecycleInjector.builder() .usingBasePackages("com.netflix") .withAdditionalModules(new AbstractModule() { @Override protected void configure() { Config config = MapConfig.builder() .put("spectator.nflx.enabled", "false") .build(); bind(Config.class).toInstance(config); } }) .build() .createInjector(); LifecycleManager lcMgr = injector.getInstance(LifecycleManager.class); lcMgr.start(); Assertions.assertNotNull(injector.getInstance(Plugin.class)); lcMgr.close(); }
} else { adminResourceInjector = LifecycleInjector .builder() .inStage(Stage.DEVELOPMENT) .usingBasePackages("com.netflix.explorers")