diff --git a/docs/pom.xml b/docs/pom.xml
index 659b800ef..3816ec5fd 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -14,7 +14,7 @@
spring-cloud-sleuth
- 1.0.x,1.1.x
+ 1.0.x,1.1.x,1.2.x
${basedir}/..
diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java
index 39e5fef6e..ccda2ad05 100644
--- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java
+++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java
@@ -25,7 +25,9 @@ import org.springframework.boot.context.embedded.EmbeddedServletContainerInitial
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.commons.util.InetUtilsProperties;
import org.springframework.cloud.sleuth.Span;
+import org.springframework.context.EnvironmentAware;
import org.springframework.context.event.EventListener;
+import org.springframework.core.env.Environment;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -43,15 +45,17 @@ import org.springframework.util.StringUtils;
* @author Dave Syer
* @since 1.0.0
*/
-public class ServerPropertiesHostLocator implements HostLocator {
+public class ServerPropertiesHostLocator implements HostLocator, EnvironmentAware {
private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass());
+ private static final String IP_ADDRESS_PROP_NAME = "spring.cloud.client.ipAddress";
private final ServerProperties serverProperties; // Nullable
private final String appName;
private final InetUtils inetUtils;
private final ZipkinProperties zipkinProperties;
private Integer port; // Lazy assigned
+ private Environment environment;
public ServerPropertiesHostLocator(ServerProperties serverProperties, String appName,
ZipkinProperties zipkinProperties, InetUtils inetUtils) {
@@ -98,6 +102,9 @@ public class ServerPropertiesHostLocator implements HostLocator {
if (this.serverProperties != null && this.serverProperties.getAddress() != null) {
address = this.serverProperties.getAddress().getHostAddress();
}
+ else if (this.environment != null) {
+ address = this.environment.getProperty(IP_ADDRESS_PROP_NAME, String.class);
+ }
else {
address = this.inetUtils.findFirstNonLoopbackAddress().getHostAddress();
}
@@ -120,4 +127,8 @@ public class ServerPropertiesHostLocator implements HostLocator {
return serviceName;
}
+ @Override
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
+ }
}
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java
index 5f543095d..ac3f6e0fe 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java
@@ -16,8 +16,6 @@
package org.springframework.cloud.sleuth.zipkin;
-import zipkin.Endpoint;
-
import java.lang.invoke.MethodHandles;
import java.nio.ByteBuffer;
@@ -27,8 +25,11 @@ import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.commons.util.InetUtilsProperties;
+import org.springframework.context.EnvironmentAware;
import org.springframework.context.event.EventListener;
+import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
+import zipkin.Endpoint;
/**
* {@link EndpointLocator} implementation that:
@@ -43,15 +44,18 @@ import org.springframework.util.StringUtils;
* @author Dave Syer
* @since 1.0.0
*/
-public class ServerPropertiesEndpointLocator implements EndpointLocator {
+public class ServerPropertiesEndpointLocator implements EndpointLocator,
+ EnvironmentAware {
private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass());
+ private static final String IP_ADDRESS_PROP_NAME = "spring.cloud.client.ipAddress";
private final ServerProperties serverProperties;
private final String appName;
private final InetUtils inetUtils;
private final ZipkinProperties zipkinProperties;
private Integer port;
+ private Environment environment;
public ServerPropertiesEndpointLocator(ServerProperties serverProperties,
String appName, ZipkinProperties zipkinProperties, InetUtils inetUtils) {
@@ -103,8 +107,18 @@ public class ServerPropertiesEndpointLocator implements EndpointLocator {
return ByteBuffer.wrap(this.serverProperties.getAddress().getAddress())
.getInt();
}
+ else if (this.environment != null) {
+ String ipAddress = this.environment
+ .getProperty(IP_ADDRESS_PROP_NAME, String.class);
+ return InetUtils.getIpAddressAsInt(ipAddress);
+ }
else {
return ByteBuffer.wrap(this.inetUtils.findFirstNonLoopbackAddress().getAddress()).getInt();
}
}
+
+ @Override
+ public void setEnvironment(Environment environment) {
+ this.environment = environment;
+ }
}