private static void reloadPluginsAndConfiguration() { List<ConfigurationSource> configurationSources = new ArrayList<ConfigurationSource>(); for (StagemonitorConfigurationSourceInitializer initializer : ServiceLoader.load(StagemonitorConfigurationSourceInitializer.class, Stagemonitor.class.getClassLoader())) { initializer.modifyConfigurationSources(new StagemonitorConfigurationSourceInitializer.ModifyArguments(configurationSources)); } configurationSources.remove(null); plugins = ServiceLoader.load(StagemonitorPlugin.class, Stagemonitor.class.getClassLoader()); configuration = ConfigurationRegistry.builder() .optionProviders(plugins) .configSources(configurationSources) .build(); try { for (StagemonitorConfigurationSourceInitializer initializer : ServiceLoader.load(StagemonitorConfigurationSourceInitializer.class, Stagemonitor.class.getClassLoader())) { initializer.onConfigurationInitialized(new StagemonitorConfigurationSourceInitializer.ConfigInitializedArguments(configuration)); } } catch (Exception e) { logger.error(e.getMessage(), e); logger.error("Stagemonitor will be deactivated!"); disabled = true; } } }
private ConfigurationRegistry getDefaultConfigurationRegistry(List<ConfigurationSource> configSources) { try { final ConfigurationRegistry configurationRegistry = ConfigurationRegistry.builder() .configSources(configSources) .optionProviders(ServiceLoader.load(ConfigurationOptionProvider.class, ElasticApmTracer.class.getClassLoader())) .failOnMissingRequiredValues(true) .build(); configurationRegistry.scheduleReloadAtRate(30, TimeUnit.SECONDS); return configurationRegistry; } catch (IllegalStateException e) { logger.warn(e.getMessage()); return ConfigurationRegistry.builder() .addConfigSource(new SimpleSource("Noop Configuration") .add(CoreConfiguration.ACTIVE, "false") .add(CoreConfiguration.INSTRUMENT, "false") .add(CoreConfiguration.SERVICE_NAME, "none") .add(CoreConfiguration.SAMPLE_RATE, "0")) .optionProviders(ServiceLoader.load(ConfigurationOptionProvider.class, ElasticApmTracer.class.getClassLoader())) .build(); } }