diff --git a/RUNNING.md b/RUNNING.md index 4fd65bc4..38a8ca34 100644 --- a/RUNNING.md +++ b/RUNNING.md @@ -2,7 +2,7 @@ ## Config Server - `spring-platform-config$ java -Dspring.platform.config.server.uri=https://github.com/spencergibb/config-repo -jar spring-platform-config-server/target/spring-platform-config-server-1.0.0.BUILD-SNAPSHOT.jar` + `spring-platform-config$ java -Dspring.platform.config.server.uri=https://github.com/spencergibb/config-repo -jar spring-platform-config-server/target/spring-platform-config-server-1.0.0.BUILD-SNAPSHOT-exec.jar` ## Netflix Eureka diff --git a/spring-platform-netflix-core/src/main/java/org/springframework/platform/netflix/archaius/ArchaiusAutoConfiguration.java b/spring-platform-netflix-core/src/main/java/org/springframework/platform/netflix/archaius/ArchaiusAutoConfiguration.java index 39fb76be..3e601c7f 100644 --- a/spring-platform-netflix-core/src/main/java/org/springframework/platform/netflix/archaius/ArchaiusAutoConfiguration.java +++ b/spring-platform-netflix-core/src/main/java/org/springframework/platform/netflix/archaius/ArchaiusAutoConfiguration.java @@ -5,11 +5,15 @@ import com.netflix.config.ConfigurationManager; import com.netflix.config.DynamicURLConfiguration; import org.apache.commons.configuration.EnvironmentConfiguration; import org.apache.commons.configuration.SystemConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; +import java.util.concurrent.atomic.AtomicBoolean; + import static com.netflix.config.ConfigurationBasedDeploymentContext.DEPLOYMENT_APPLICATION_ID_PROPERTY; import static com.netflix.config.ConfigurationManager.*; import static com.netflix.config.ConfigurationManager.APPLICATION_PROPERTIES; @@ -21,6 +25,9 @@ import static com.netflix.config.ConfigurationManager.ENV_CONFIG_NAME; @Configuration public class ArchaiusAutoConfiguration { + private static final Logger logger = LoggerFactory.getLogger(ArchaiusAutoConfiguration.class); + private static final AtomicBoolean initialized = new AtomicBoolean(false); + @Autowired ConfigurableEnvironment env; @@ -32,47 +39,52 @@ public class ArchaiusAutoConfiguration { } protected void configureArchaius(ConfigurableEnvironmentConfiguration envConfig) { - String appName = env.getProperty("spring.application.name"); - if (appName == null) { - throw new IllegalStateException("spring.application.name may not be null"); - } - //this is deprecated, but currently it seams the only way to set it initially - System.setProperty(DEPLOYMENT_APPLICATION_ID_PROPERTY, appName); - - //TODO: support for other DeploymentContexts - - ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); - - //support to add other Configurations (Jdbc, DynamoDb, Zookeeper, jclouds, etc...) - /*if (factories != null && !factories.isEmpty()) { - for (PropertiesSourceFactory factory: factories) { - config.addConfiguration(factory.getConfiguration(), factory.getName()); + if (initialized.compareAndSet(false, true)) { + String appName = env.getProperty("spring.application.name"); + if (appName == null) { + throw new IllegalStateException("spring.application.name may not be null"); } - }*/ - config.addConfiguration(envConfig, ConfigurableEnvironmentConfiguration.class.getSimpleName()); + //this is deprecated, but currently it seams the only way to set it initially + System.setProperty(DEPLOYMENT_APPLICATION_ID_PROPERTY, appName); - //below come from ConfigurationManager.createDefaultConfigInstance() - try { - DynamicURLConfiguration defaultURLConfig = new DynamicURLConfiguration(); - config.addConfiguration(defaultURLConfig, URL_CONFIG_NAME); - } catch (Throwable e) { - e.printStackTrace(); //TODO: log error + //TODO: support for other DeploymentContexts + + ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); + + //support to add other Configurations (Jdbc, DynamoDb, Zookeeper, jclouds, etc...) + /*if (factories != null && !factories.isEmpty()) { + for (PropertiesSourceFactory factory: factories) { + config.addConfiguration(factory.getConfiguration(), factory.getName()); + } + }*/ + config.addConfiguration(envConfig, ConfigurableEnvironmentConfiguration.class.getSimpleName()); + + //below come from ConfigurationManager.createDefaultConfigInstance() + try { + DynamicURLConfiguration defaultURLConfig = new DynamicURLConfiguration(); + config.addConfiguration(defaultURLConfig, URL_CONFIG_NAME); + } catch (Throwable e) { + e.printStackTrace(); //TODO: log error + } + + //TODO: sys/env above urls? + if (!Boolean.getBoolean(DISABLE_DEFAULT_SYS_CONFIG)) { + SystemConfiguration sysConfig = new SystemConfiguration(); + config.addConfiguration(sysConfig, SYS_CONFIG_NAME); + } + if (!Boolean.getBoolean(DISABLE_DEFAULT_ENV_CONFIG)) { + EnvironmentConfiguration environmentConfiguration = new EnvironmentConfiguration(); + config.addConfiguration(environmentConfiguration, ENV_CONFIG_NAME); + } + + ConcurrentCompositeConfiguration appOverrideConfig = new ConcurrentCompositeConfiguration(); + config.addConfiguration(appOverrideConfig, APPLICATION_PROPERTIES); + config.setContainerConfigurationIndex(config.getIndexOfConfiguration(appOverrideConfig)); + + ConfigurationManager.install(config); + } else { + //TODO: reinstall ConfigurationManager + logger.warn("Netflix ConfigurationManager has already been installed, unable to re-install"); } - - //TODO: sys/env above urls? - if (!Boolean.getBoolean(DISABLE_DEFAULT_SYS_CONFIG)) { - SystemConfiguration sysConfig = new SystemConfiguration(); - config.addConfiguration(sysConfig, SYS_CONFIG_NAME); - } - if (!Boolean.getBoolean(DISABLE_DEFAULT_ENV_CONFIG)) { - EnvironmentConfiguration environmentConfiguration = new EnvironmentConfiguration(); - config.addConfiguration(environmentConfiguration, ENV_CONFIG_NAME); - } - - ConcurrentCompositeConfiguration appOverrideConfig = new ConcurrentCompositeConfiguration(); - config.addConfiguration(appOverrideConfig, APPLICATION_PROPERTIES); - config.setContainerConfigurationIndex(config.getIndexOfConfiguration(appOverrideConfig)); - - ConfigurationManager.install(config); } } diff --git a/spring-platform-netflix-hystrix/pom.xml b/spring-platform-netflix-hystrix/pom.xml index 6b7a3aed..614999e2 100644 --- a/spring-platform-netflix-hystrix/pom.xml +++ b/spring-platform-netflix-hystrix/pom.xml @@ -53,6 +53,10 @@ org.springframework.platform spring-platform-config-client + + com.netflix.eureka + eureka-client + com.netflix.hystrix hystrix-core