diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java index 10620415d..4d923facf 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/registry/NacosRegistration.java @@ -20,8 +20,11 @@ import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.ManagementServerPortUtils; import org.springframework.cloud.client.serviceregistry.Registration; +import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; +import org.springframework.util.StringUtils; import java.net.URI; import java.util.Map; @@ -40,17 +43,23 @@ import static com.alibaba.nacos.api.PropertyKeyConst.*; */ public class NacosRegistration implements Registration, ServiceInstance { + private static final String MANAGEMENT_PORT = "management.port"; + private static final String MANAGEMENT_CONTEXT_PATH = "management.context-path"; + private static final String MANAGEMENT_ADDRESS = "management.address"; + @Autowired private NacosDiscoveryProperties nacosDiscoveryProperties; - private NamingService nacosNamingService; - @Autowired - private Environment environment; + private ApplicationContext context; + + private NamingService nacosNamingService; @PostConstruct public void init() { - nacosDiscoveryProperties.overrideFromEnv(environment); + + Environment env = context.getEnvironment(); + nacosDiscoveryProperties.overrideFromEnv(context.getEnvironment()); Properties properties = new Properties(); properties.put(SERVER_ADDR, nacosDiscoveryProperties.getServerAddr()); @@ -67,6 +76,21 @@ public class NacosRegistration implements Registration, ServiceInstance { catch (Exception e) { } + + Integer managementPort = ManagementServerPortUtils.getPort(context); + if (null != managementPort) { + Map metadata = nacosDiscoveryProperties.getMetadata(); + metadata.put(MANAGEMENT_PORT, managementPort.toString()); + String contextPath = env + .getProperty("management.server.servlet.context-path"); + String address = env.getProperty("management.server.address"); + if (!StringUtils.isEmpty(contextPath)) { + metadata.put(MANAGEMENT_CONTEXT_PATH, contextPath); + } + if (!StringUtils.isEmpty(address)) { + metadata.put(MANAGEMENT_ADDRESS, address); + } + } } @Override @@ -85,9 +109,7 @@ public class NacosRegistration implements Registration, ServiceInstance { } public void setPort(int port) { - if (nacosDiscoveryProperties.getPort() < 0) { - this.nacosDiscoveryProperties.setPort(port); - } + this.nacosDiscoveryProperties.setPort(port); } @Override