diff --git a/pom.xml b/pom.xml
index 08629915..e96ed354 100644
--- a/pom.xml
+++ b/pom.xml
@@ -349,6 +349,31 @@
false
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${flatten-maven-plugin.version}
+
+ true
+ resolveCiFriendliesOnly
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+ flatten.clean
+ clean
+
+ clean
+
+
+
+
@@ -406,32 +431,6 @@
-
-
- org.codehaus.mojo
- flatten-maven-plugin
- ${flatten-maven-plugin.version}
-
- true
- resolveCiFriendliesOnly
-
-
-
- flatten
- process-resources
-
- flatten
-
-
-
- flatten.clean
- clean
-
- clean
-
-
-
-
diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceRegistrationNonWebApplicationAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceRegistrationNonWebApplicationAutoConfiguration.java
index a9b8c33d..414e7a0a 100644
--- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceRegistrationNonWebApplicationAutoConfiguration.java
+++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceRegistrationNonWebApplicationAutoConfiguration.java
@@ -76,12 +76,17 @@ public class DubboServiceRegistrationNonWebApplicationAutoConfiguration {
@Around("execution(* org.springframework.cloud.client.serviceregistry.Registration.getPort())")
public Object getPort(ProceedingJoinPoint pjp) throws Throwable {
+ /**
+ * move setServerPort from onApplicationStarted() to here for this issue :
+ * https://github.com/alibaba/spring-cloud-alibaba/issues/1383
+ * @author theonefx
+ */
+ setServerPort();
return serverPort != null ? serverPort : pjp.proceed();
}
@EventListener(ApplicationStartedEvent.class)
public void onApplicationStarted() {
- setServerPort();
register();
}
@@ -99,18 +104,22 @@ public class DubboServiceRegistrationNonWebApplicationAutoConfiguration {
*/
private void setServerPort() {
if (serverPort == null) {
- for (List urls : repository.getAllExportedUrls().values()) {
- urls.stream()
- .filter(url -> REST_PROTOCOL.equalsIgnoreCase(url.getProtocol()))
- .findFirst().ifPresent(url -> {
- serverPort = url.getPort();
- });
-
- // If REST protocol is not present, use any applied port.
+ synchronized (DubboServiceRegistrationNonWebApplicationAutoConfiguration.class) {
if (serverPort == null) {
- urls.stream().findAny().ifPresent(url -> {
- serverPort = url.getPort();
- });
+ for (List urls : repository.getAllExportedUrls().values()) {
+ urls.stream().filter(
+ url -> REST_PROTOCOL.equalsIgnoreCase(url.getProtocol()))
+ .findFirst().ifPresent(url -> {
+ serverPort = url.getPort();
+ });
+
+ // If REST protocol is not present, use any applied port.
+ if (serverPort == null) {
+ urls.stream().findAny().ifPresent(url -> {
+ serverPort = url.getPort();
+ });
+ }
+ }
}
}
}
@@ -126,6 +135,7 @@ public class DubboServiceRegistrationNonWebApplicationAutoConfiguration {
@EventListener(ServiceInstancePreRegisteredEvent.class)
public void onServiceInstancePreRegistered(
ServiceInstancePreRegisteredEvent event) {
+ setServerPort();
registration.setPort(serverPort);
}