You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/05/14 08:00:23 UTC

[servicecomb-java-chassis] 01/09: [SCB-1876] part-1: first move definitions to core

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 174ff603fce1b4b1c1c0e87c907a4febabf8b609
Author: liubao <bi...@qq.com>
AuthorDate: Tue Apr 28 11:59:32 2020 +0800

    [SCB-1876] part-1: first move definitions to core
---
 core/pom.xml                                       |  4 ---
 .../org/apache/servicecomb/core/SCBEngine.java     | 32 ++++++++++++++++++++++
 .../serviceregistry/api/MicroserviceKey.java       |  0
 .../serviceregistry/api/PropertyExtended.java      |  0
 .../servicecomb/serviceregistry/api/Versions.java  |  0
 .../serviceregistry/api/registry/BasePath.java     |  0
 .../api/registry/DataCenterInfo.java               |  0
 .../serviceregistry/api/registry/Framework.java    |  0
 .../api/registry/FrameworkVersions.java            |  0
 .../serviceregistry/api/registry/HealthCheck.java  |  0
 .../api/registry/HealthCheckMode.java              |  0
 .../serviceregistry/api/registry/Microservice.java |  4 +--
 .../api/registry/MicroserviceInstance.java         |  0
 .../api/registry/MicroserviceInstanceStatus.java   |  0
 .../api/registry/MicroserviceStatus.java           |  0
 .../serviceregistry/api/registry/WatchAction.java  |  0
 .../api/response/FindInstancesResponse.java        |  0
 .../response/MicroserviceInstanceChangedEvent.java |  0
 .../serviceregistry/cache/CacheEndpoint.java       |  0
 .../serviceregistry/cache/InstanceCache.java       |  0
 .../client/http/MicroserviceInstances.java         |  0
 .../config/AbstractPropertiesLoader.java           |  0
 .../config/ConfigurePropertyUtils.java             |  6 ++--
 .../config/InstancePropertiesLoader.java           |  0
 .../serviceregistry/consumer/AppManager.java       |  0
 .../consumer/MicroserviceInstancePing.java         |  0
 .../consumer/MicroserviceManager.java              |  0
 .../consumer/MicroserviceVersion.java              |  0
 .../consumer/MicroserviceVersionRule.java          |  0
 .../consumer/MicroserviceVersionRuleData.java      |  0
 .../consumer/MicroserviceVersions.java             |  2 +-
 .../consumer/SimpleMicroserviceInstancePing.java   |  0
 .../consumer/StaticMicroserviceVersions.java       |  0
 .../definition/DefinitionConst.java                |  4 +++
 .../discovery/AbstractDiscoveryFilter.java         |  0
 .../discovery/AbstractEndpointDiscoveryFilter.java |  0
 .../discovery/DiscoveryContext.java                |  0
 .../serviceregistry/discovery/DiscoveryFilter.java |  0
 .../serviceregistry/discovery/DiscoveryTree.java   |  0
 .../discovery/DiscoveryTreeNode.java               |  0
 .../discovery/InstanceStatusDiscoveryFilter.java   |  0
 .../event/CreateMicroserviceEvent.java             |  0
 .../event/CreateMicroserviceVersionEvent.java      |  0
 .../event/DestroyMicroserviceEvent.java            |  0
 .../event/DestroyMicroserviceVersionEvent.java     |  0
 .../serviceregistry/task/event/ExceptionEvent.java |  0
 .../task/event/HeartbeatFailEvent.java             |  0
 .../task/event/HeartbeatSuccEvent.java             |  0
 .../serviceregistry/task/event/RecoveryEvent.java  |  0
 .../task/event/SafeModeChangeEvent.java            |  0
 .../serviceregistry/task/event/ShutdownEvent.java  |  0
 .../serviceregistry/version/Version.java           |  0
 .../serviceregistry/version/VersionRule.java       |  0
 .../version/VersionRuleFixedParser.java            |  0
 .../version/VersionRuleLatestParser.java           |  0
 .../serviceregistry/version/VersionRuleParser.java |  0
 .../version/VersionRuleRangeParser.java            |  0
 .../version/VersionRuleStartFromParser.java        |  0
 .../serviceregistry/version/VersionRuleUtils.java  |  0
 .../serviceregistry/version/VersionUtils.java      |  0
 .../apache/servicecomb/deployment/Deployment.java  | 27 ------------------
 huawei-cloud/servicestage/pom.xml                  |  2 +-
 service-registry/pom.xml                           |  6 ++++
 .../servicecomb/serviceregistry/api/Const.java     |  3 +-
 64 files changed, 50 insertions(+), 40 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 5f386c0..c1dcef8 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -30,10 +30,6 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
-      <artifactId>service-registry</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
       <artifactId>swagger-invocation-core</artifactId>
     </dependency>
     <dependency>
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index 3f2a2fc..0c13f85 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -19,7 +19,9 @@ package org.apache.servicecomb.core;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicLong;
@@ -68,6 +70,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.util.StringUtils;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.eventbus.AllowConcurrentEvents;
 import com.google.common.eventbus.EventBus;
 import com.google.common.eventbus.Subscribe;
@@ -87,6 +90,21 @@ public class SCBEngine {
 
   private static final Object initializationLock = new Object();
 
+  /*
+ * class loader scope property is used when users run java-chassis in an class loader separated environment.
+ *
+ * For examples, deploy two war's to web container, or deploy two bundles in an OSGI container.
+ *
+ * Now java chassis not testing this feature carefully, but we will support users doing so.
+ *
+ * users who using this feature can feed back your problems in issues.
+ *
+ * NOTICE: this context is better put into module `core`, however now `core` depends on `service-registry`.
+ *
+ * Maybe it's better to refactor project that `service-registry` depends on `core`.
+ */
+  private static final Map<String, String> CLASS_LOADER_SCOPE_CONTEXT = new HashMap<>();
+
   private volatile static SCBEngine INSTANCE;
 
   private ConsumerHandlerManager consumerHandlerManager = new ConsumerHandlerManager();
@@ -173,6 +191,20 @@ public class SCBEngine {
     return RegistryUtils.getSwaggerLoader();
   }
 
+
+  public static void setClassLoaderScopeProperty(String key, String value) {
+    CLASS_LOADER_SCOPE_CONTEXT.put(key, value);
+  }
+
+  public static String getClassLoaderScopeProperty(String key) {
+    return CLASS_LOADER_SCOPE_CONTEXT.get(key);
+  }
+
+  @VisibleForTesting
+  public static void clearClassLoaderScopeProperty() {
+    CLASS_LOADER_SCOPE_CONTEXT.clear();
+  }
+
   public ConsumerHandlerManager getConsumerHandlerManager() {
     return consumerHandlerManager;
   }
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/MicroserviceKey.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/MicroserviceKey.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/MicroserviceKey.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/MicroserviceKey.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/PropertyExtended.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/PropertyExtended.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/PropertyExtended.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/PropertyExtended.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Versions.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/Versions.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Versions.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/Versions.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/BasePath.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/BasePath.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/BasePath.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/BasePath.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/DataCenterInfo.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/DataCenterInfo.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/DataCenterInfo.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/DataCenterInfo.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Framework.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Framework.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Framework.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Framework.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/FrameworkVersions.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheck.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheck.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheck.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheck.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheckMode.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheckMode.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheckMode.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/HealthCheckMode.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java
similarity index 97%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java
index c25c330..17f7d4d 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java
+++ b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/Microservice.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.servicecomb.serviceregistry.api.Const;
+import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -196,7 +196,7 @@ public class Microservice {
 
   public static String generateAbsoluteMicroserviceName(String appId, String microserviceName) {
     StringBuilder sb = new StringBuilder(appId.length() + microserviceName.length() + 1);
-    sb.append(appId).append(Const.APP_SERVICE_SEPARATOR).append(microserviceName);
+    sb.append(appId).append(DefinitionConst.APP_SERVICE_SEPARATOR).append(microserviceName);
     return sb.toString();
   }
 
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstance.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstance.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstance.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstance.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstanceStatus.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstanceStatus.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstanceStatus.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceInstanceStatus.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceStatus.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceStatus.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceStatus.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/MicroserviceStatus.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/WatchAction.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/WatchAction.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/WatchAction.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/registry/WatchAction.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/response/FindInstancesResponse.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/response/FindInstancesResponse.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/response/FindInstancesResponse.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/response/FindInstancesResponse.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/response/MicroserviceInstanceChangedEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/api/response/MicroserviceInstanceChangedEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/response/MicroserviceInstanceChangedEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/api/response/MicroserviceInstanceChangedEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/CacheEndpoint.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/cache/CacheEndpoint.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/CacheEndpoint.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/cache/CacheEndpoint.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/InstanceCache.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/cache/InstanceCache.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/cache/InstanceCache.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/cache/InstanceCache.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/MicroserviceInstances.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/client/http/MicroserviceInstances.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/MicroserviceInstances.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/client/http/MicroserviceInstances.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/AbstractPropertiesLoader.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/config/AbstractPropertiesLoader.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/AbstractPropertiesLoader.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/config/AbstractPropertiesLoader.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java
similarity index 93%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java
index 4cbb918..464419a 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java
+++ b/core/src/main/java/org/apache/servicecomb/serviceregistry/config/ConfigurePropertyUtils.java
@@ -25,9 +25,9 @@ import java.util.Map;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.lang.StringUtils;
-import org.apache.servicecomb.deployment.Deployment;
-import org.apache.servicecomb.serviceregistry.api.Const;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.serviceregistry.api.registry.BasePath;
+import org.apache.servicecomb.serviceregistry.definition.DefinitionConst;
 
 import com.netflix.config.DynamicPropertyFactory;
 
@@ -73,7 +73,7 @@ public final class ConfigurePropertyUtils {
   }
 
   private static String buildPath(String path) {
-    String prefix = Deployment.getClassLoaderScopeProperty(Const.URL_PREFIX);
+    String prefix = SCBEngine.getClassLoaderScopeProperty(DefinitionConst.URL_PREFIX);
     if (StringUtils.isNotEmpty(prefix)) {
       if (!path.startsWith(prefix)) {
         path = prefix + path;
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/InstancePropertiesLoader.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/config/InstancePropertiesLoader.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/InstancePropertiesLoader.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/config/InstancePropertiesLoader.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/AppManager.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceInstancePing.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceInstancePing.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceInstancePing.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceInstancePing.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceManager.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceManager.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceManager.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceManager.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersion.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRule.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRule.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRule.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRule.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRuleData.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRuleData.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRuleData.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersionRuleData.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
similarity index 98%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
index 5dc1cec..dd34169 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
+++ b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java
@@ -315,7 +315,7 @@ public class MicroserviceVersions {
     return (appId.equals(changedEvent.getKey().getAppId()) &&
         microserviceName.equals(changedEvent.getKey().getServiceName())) ||
         microserviceName.equals(
-            changedEvent.getKey().getAppId() + Const.APP_SERVICE_SEPARATOR + changedEvent.getKey().getServiceName());
+            changedEvent.getKey().getAppId() + DefinitionConst.APP_SERVICE_SEPARATOR + changedEvent.getKey().getServiceName());
   }
 
   public void destroy() {
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/SimpleMicroserviceInstancePing.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/SimpleMicroserviceInstancePing.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/SimpleMicroserviceInstancePing.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/SimpleMicroserviceInstancePing.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/consumer/StaticMicroserviceVersions.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java
similarity index 95%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java
index 64f8bd7..53a61aa 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java
+++ b/core/src/main/java/org/apache/servicecomb/serviceregistry/definition/DefinitionConst.java
@@ -40,4 +40,8 @@ public interface DefinitionConst {
   String VERSION_RULE_LATEST = "latest";
 
   String VERSION_RULE_ALL = "0.0.0.0+";
+
+  String APP_SERVICE_SEPARATOR = ":";
+
+  String URL_PREFIX = "urlPrefix";
 }
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractDiscoveryFilter.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractDiscoveryFilter.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractDiscoveryFilter.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractDiscoveryFilter.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractEndpointDiscoveryFilter.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractEndpointDiscoveryFilter.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractEndpointDiscoveryFilter.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/AbstractEndpointDiscoveryFilter.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryContext.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryContext.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryContext.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryContext.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryFilter.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryFilter.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryFilter.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryFilter.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTree.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTreeNode.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTreeNode.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTreeNode.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/DiscoveryTreeNode.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/InstanceStatusDiscoveryFilter.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/InstanceStatusDiscoveryFilter.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/discovery/InstanceStatusDiscoveryFilter.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/discovery/InstanceStatusDiscoveryFilter.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceVersionEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceVersionEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceVersionEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/event/CreateMicroserviceVersionEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceVersionEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceVersionEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceVersionEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/event/DestroyMicroserviceVersionEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ExceptionEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ExceptionEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ExceptionEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ExceptionEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatFailEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatFailEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatFailEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatFailEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatSuccEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatSuccEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatSuccEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/HeartbeatSuccEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/RecoveryEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/RecoveryEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/RecoveryEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/RecoveryEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/SafeModeChangeEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/SafeModeChangeEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/SafeModeChangeEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/SafeModeChangeEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ShutdownEvent.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ShutdownEvent.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ShutdownEvent.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/task/event/ShutdownEvent.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/Version.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/Version.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/Version.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/Version.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRule.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRule.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRule.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRule.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleFixedParser.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleFixedParser.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleFixedParser.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleFixedParser.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleLatestParser.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleLatestParser.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleLatestParser.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleLatestParser.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleParser.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleParser.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleParser.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleParser.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleRangeParser.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleRangeParser.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleRangeParser.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleRangeParser.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleStartFromParser.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleStartFromParser.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleStartFromParser.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleStartFromParser.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleUtils.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleUtils.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleUtils.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionRuleUtils.java
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionUtils.java b/core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionUtils.java
similarity index 100%
rename from service-registry/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionUtils.java
rename to core/src/main/java/org/apache/servicecomb/serviceregistry/version/VersionUtils.java
diff --git a/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java b/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
index 06c075e..dec140f 100644
--- a/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
+++ b/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
@@ -26,21 +26,6 @@ import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
 import com.google.common.annotations.VisibleForTesting;
 
 public class Deployment {
-  /*
-   * class loader scope property is used when users run java-chassis in an class loader separated environment.
-   *
-   * For examples, deploy two war's to web container, or deploy two bundles in an OSGI container.
-   *
-   * Now java chassis not testing this feature carefully, but we will support users doing so.
-   *
-   * users who using this feature can feed back your problems in issues.
-   *
-   * NOTICE: this context is better put into module `core`, however now `core` depends on `service-registry`.
-   *
-   * Maybe it's better to refactor project that `service-registry` depends on `core`.
-   */
-  private static final Map<String, String> CLASS_LOADER_SCOPE_CONTEXT = new HashMap<>();
-
   private static List<DeploymentProvider> providerList = SPIServiceUtils.getSortedService(DeploymentProvider.class);
 
   public static SystemBootstrapInfo getSystemBootStrapInfo(String systemKey) {
@@ -52,16 +37,4 @@ public class Deployment {
     return null;
   }
 
-  public static void setClassLoaderScopeProperty(String key, String value) {
-    CLASS_LOADER_SCOPE_CONTEXT.put(key, value);
-  }
-
-  public static String getClassLoaderScopeProperty(String key) {
-    return CLASS_LOADER_SCOPE_CONTEXT.get(key);
-  }
-
-  @VisibleForTesting
-  public static void clearClassLoaderScopeProperty() {
-    CLASS_LOADER_SCOPE_CONTEXT.clear();
-  }
 }
diff --git a/huawei-cloud/servicestage/pom.xml b/huawei-cloud/servicestage/pom.xml
index 660b051..af87940 100644
--- a/huawei-cloud/servicestage/pom.xml
+++ b/huawei-cloud/servicestage/pom.xml
@@ -30,7 +30,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
-      <artifactId>service-registry</artifactId>
+      <artifactId>java-chassis-core</artifactId>
     </dependency>
   </dependencies>
 
diff --git a/service-registry/pom.xml b/service-registry/pom.xml
index 6b36881..136ccb0 100644
--- a/service-registry/pom.xml
+++ b/service-registry/pom.xml
@@ -50,6 +50,12 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>swagger-generator-core</artifactId>
     </dependency>
+
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>java-chassis-core</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java
index 78e625a..606b0b2 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/api/Const.java
@@ -184,11 +184,10 @@ public final class Const {
 
   public static final String REGISTRY_SERVICE_NAME = "SERVICECENTER";
 
-  public static final String APP_SERVICE_SEPARATOR = ":";
 
   public static final String PATH_CHECKSESSION = "checksession";
 
-  public static final String URL_PREFIX = "urlPrefix";
+
 
   public static final String INSTANCE_PUBKEY_PRO = "publickey";