diff --git a/pom.xml b/pom.xml
index 4f252859..73fc8858 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
1.0.0.BUILD-SNAPSHOT
${basedir}
0.6.5
- 1.2.5
+ 1.3.4
8.11.0
1.4.18
2.1.0
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurkeaTransportConfig.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurkeaTransportConfig.java
new file mode 100644
index 00000000..e58f21d2
--- /dev/null
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/CloudEurkeaTransportConfig.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2013-2015 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.netflix.eureka;
+
+import com.netflix.discovery.shared.transport.EurekaTransportConfig;
+
+import lombok.Data;
+
+/**
+ * @author Spencer Gibb
+ */
+@Data
+public class CloudEurkeaTransportConfig implements EurekaTransportConfig {
+
+ private int sessionedClientReconnectIntervalSeconds = 20 * 60;
+
+ private double retryableClientQuarantineRefreshPercentage = 0.66;
+
+ private int bootstrapResolverRefreshIntervalSeconds = 5 * 60;
+
+ private int applicationsResolverDataStalenessThresholdSeconds = 5 * 60;
+
+ private int asyncResolverRefreshIntervalMs = 5 * 60 * 1000;
+
+ private int asyncResolverWarmUpTimeoutMs = 5000;
+
+ private int asyncExecutorThreadPoolSize = 5;
+
+ private String readClusterVip;
+
+ private boolean bootstrapResolverForQuery = true;
+
+ @Override
+ public boolean useBootstrapResolverForQuery() {
+ return this.bootstrapResolverForQuery;
+ }
+}
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientConfigBean.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientConfigBean.java
index 9e3d8e30..b71eed75 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientConfigBean.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientConfigBean.java
@@ -22,22 +22,30 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import lombok.Data;
-
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.core.env.PropertyResolver;
import com.netflix.appinfo.EurekaAccept;
import com.netflix.discovery.EurekaClientConfig;
+import com.netflix.discovery.shared.transport.EurekaTransportConfig;
+
+import lombok.Data;
/**
* @author Dave Syer
*/
@Data
-@ConfigurationProperties("eureka.client")
-public class EurekaClientConfigBean implements EurekaClientConfig {
+@ConfigurationProperties(EurekaClientConfigBean.PREFIX)
+public class EurekaClientConfigBean implements EurekaClientConfig, EurekaConstants {
+
+ public static final String PREFIX = "eureka.client";
+
+ @Autowired(required = false)
+ PropertyResolver propertyResolver;
public static final String DEFAULT_URL = "http://localhost:8761"
- + EurekaServerConfigBean.DEFAULT_PREFIX + "/";
+ + DEFAULT_PREFIX + "/";
public static final String DEFAULT_ZONE = "defaultZone";
@@ -45,6 +53,8 @@ public class EurekaClientConfigBean implements EurekaClientConfig {
private boolean enabled = true;
+ private EurekaTransportConfig transport = new CloudEurkeaTransportConfig();
+
private int registryFetchIntervalSeconds = 30;
private int instanceInfoReplicationIntervalSeconds = 30;
@@ -207,4 +217,17 @@ public class EurekaClientConfigBean implements EurekaClientConfig {
return this.onDemandUpdateStatusChange;
}
+ @Override
+ public String getExperimental(String name) {
+ if (propertyResolver != null) {
+ return propertyResolver.getProperty(PREFIX + ".experimental." + name,
+ String.class, null);
+ }
+ return null;
+ }
+
+ @Override
+ public EurekaTransportConfig getTransportConfig() {
+ return getTransport();
+ }
}
diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/advice/LeaseManagerLite.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaConstants.java
similarity index 62%
rename from spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/advice/LeaseManagerLite.java
rename to spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaConstants.java
index 0c6ec102..75dc0493 100644
--- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/advice/LeaseManagerLite.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaConstants.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2013-2014 the original author or authors.
+ * Copyright 2013-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,16 +14,13 @@
* limitations under the License.
*/
-package org.springframework.cloud.netflix.eureka.server.advice;
-
-import com.netflix.appinfo.InstanceInfo;
-import com.netflix.eureka.lease.LeaseManager;
+package org.springframework.cloud.netflix.eureka;
/**
- * @author Dave Syer
+ * @author Spencer Gibb
*/
-public interface LeaseManagerLite extends LeaseManager {
+public interface EurekaConstants {
- void register(InstanceInfo info, boolean isReplication);
+ String DEFAULT_PREFIX = "/eureka";
}
diff --git a/spring-cloud-netflix-eureka-server/pom.xml b/spring-cloud-netflix-eureka-server/pom.xml
index 5fefe1a7..b7ee0ce4 100644
--- a/spring-cloud-netflix-eureka-server/pom.xml
+++ b/spring-cloud-netflix-eureka-server/pom.xml
@@ -68,6 +68,10 @@
com.netflix.archaius
archaius-core
+
+ javax.inject
+ javax.inject
+
com.thoughtworks.xstream
diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java
index 2d1f5078..792844a7 100644
--- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java
+++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java
@@ -27,6 +27,10 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
+import com.netflix.eureka.EurekaServerContext;
+import com.netflix.eureka.EurekaServerContextHolder;
+import com.netflix.eureka.registry.PeerAwareInstanceRegistry;
+import com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -39,7 +43,6 @@ import com.netflix.appinfo.InstanceInfo;
import com.netflix.config.ConfigurationManager;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Pair;
-import com.netflix.eureka.PeerAwareInstanceRegistryImpl;
import com.netflix.eureka.cluster.PeerEurekaNode;
import com.netflix.eureka.resources.StatusResource;
import com.netflix.eureka.util.StatusInfo;
@@ -78,19 +81,17 @@ public class EurekaController {
@RequestMapping(value = "/lastn", method = RequestMethod.GET)
public String lastn(HttpServletRequest request, Map model) {
populateBase(request, model);
- PeerAwareInstanceRegistryImpl registery = PeerAwareInstanceRegistryImpl.getInstance();
+ PeerAwareInstanceRegistryImpl registry = (PeerAwareInstanceRegistryImpl) getRegistry();
ArrayList