[ 
https://issues.apache.org/jira/browse/SCB-612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16579485#comment-16579485
 ] 

ASF GitHub Bot commented on SCB-612:
------------------------------------

heyile closed pull request #861: [SCB-612]delete useless MicroserviceMetaManager
URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/861
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
index 8cc33a582..14e4c39e3 100644
--- 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
+++ 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
@@ -20,25 +20,16 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.inject.Inject;
-
 import org.apache.servicecomb.common.rest.locator.ServicePathManager;
 import org.apache.servicecomb.core.BootListener;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.loader.SchemaListener;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
 import org.springframework.stereotype.Component;
 
 @Component
 public class RestEngineSchemaListener implements SchemaListener, BootListener {
-  private MicroserviceMetaManager microserviceMetaManager;
-
-  @Inject
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
 
   @Override
   public void onBootEvent(BootEvent event) {
@@ -46,8 +37,7 @@ public void onBootEvent(BootEvent event) {
       return;
     }
 
-    MicroserviceMeta microserviceMeta =
-        
microserviceMetaManager.getOrCreateMicroserviceMeta(RegistryUtils.getMicroservice());
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     ServicePathManager servicePathManager = 
ServicePathManager.getServicePathManager(microserviceMeta);
     if (servicePathManager != null) {
       servicePathManager.buildProducerPaths();
diff --git 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
index 673c68447..f3cce625e 100644
--- 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
+++ 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
@@ -22,14 +22,12 @@
 import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
 import org.apache.servicecomb.common.rest.locator.OperationLocator;
 import org.apache.servicecomb.common.rest.locator.ServicePathManager;
-import org.apache.servicecomb.core.Const;
-import org.apache.servicecomb.core.CseContext;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.invocation.InvocationFactory;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 
 public class RestProducerInvocation extends AbstractRestInvocation {
@@ -54,13 +52,7 @@ public void invoke(Transport transport, HttpServletRequestEx 
requestEx, HttpServ
   }
 
   protected void findRestOperation() {
-    String targetMicroserviceName = 
requestEx.getHeader(Const.TARGET_MICROSERVICE);
-    if (targetMicroserviceName == null) {
-      // for compatible
-      targetMicroserviceName = 
RegistryUtils.getMicroservice().getServiceName();
-    }
-    MicroserviceMeta selfMicroserviceMeta =
-        
CseContext.getInstance().getMicroserviceMetaManager().ensureFindValue(targetMicroserviceName);
+    MicroserviceMeta selfMicroserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     findRestOperation(selfMicroserviceMeta);
   }
 
diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
index cc0c2c013..2b0fffae2 100644
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
+++ 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
@@ -39,7 +39,6 @@
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.SCBStatus;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.event.InvocationFinishEvent;
@@ -86,9 +85,6 @@
   @Mocked
   ReferenceConfig endpoint;
 
-  @Mocked
-  MicroserviceMetaManager microserviceMetaManager;
-
   @Mocked
   SchemaMeta schemaMeta;
 
@@ -691,8 +687,6 @@ public void findRestOperationServicePathManagerNull(@Mocked 
MicroserviceMeta mic
       {
         requestEx.getHeader(Const.TARGET_MICROSERVICE);
         result = "ms";
-        microserviceMetaManager.ensureFindValue("ms");
-        result = microserviceMeta;
         ServicePathManager.getServicePathManager(microserviceMeta);
         result = null;
       }
diff --git 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
index 60a503cf3..671106b3c 100644
--- 
a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
+++ 
b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
@@ -27,10 +27,9 @@
 import org.apache.servicecomb.common.rest.locator.OperationLocator;
 import org.apache.servicecomb.common.rest.locator.ServicePathManager;
 import org.apache.servicecomb.core.Const;
-import org.apache.servicecomb.core.CseContext;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.foundation.vertx.http.AbstractHttpServletRequest;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
@@ -63,7 +62,7 @@
   RestOperationMeta restOperationMeta;
 
   @Mocked
-  MicroserviceMetaManager microserviceMetaManager;
+  MicroserviceMeta microserviceMeta;
 
   List<HttpServerFilter> httpServerFilters = Collections.emptyList();
 
@@ -80,11 +79,6 @@
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
 
-  @Before
-  public void setup() {
-    
CseContext.getInstance().setMicroserviceMetaManager(microserviceMetaManager);
-  }
-
   private void initRestProducerInvocation() {
     restProducerInvocation.transport = transport;
     restProducerInvocation.requestEx = requestEx;
@@ -93,9 +87,14 @@ private void initRestProducerInvocation() {
     restProducerInvocation.httpServerFilters = httpServerFilters;
   }
 
+  @Before
+  public void setup() {
+    SCBEngine.getInstance().setProducerMicroserviceMeta(microserviceMeta);
+  }
+
   @After
   public void teardown() {
-    CseContext.getInstance().setMicroserviceMetaManager(null);
+    SCBEngine.getInstance().setProducerMicroserviceMeta(null);
   }
 
   @Test
@@ -149,28 +148,32 @@ public void findRestOperationNameFromRegistry() {
     Microservice microservice = new Microservice();
     microservice.setServiceName("ms");
 
-    Exception e = new Exception("stop");
     new Expectations(RegistryUtils.class) {
       {
         requestEx.getHeader(Const.TARGET_MICROSERVICE);
         result = null;
         RegistryUtils.getMicroservice();
         result = microservice;
-        microserviceMetaManager.ensureFindValue("ms");
-        result = e;
+      }
+    };
+    new Expectations(ServicePathManager.class) {
+      {
+        //just make the method throw Exception
+        ServicePathManager.getServicePathManager(microserviceMeta);
+        result = null;
       }
     };
     restProducerInvocation = new RestProducerInvocation();
     initRestProducerInvocation();
 
     expectedException.expect(Exception.class);
-    expectedException.expectMessage("stop");
+    expectedException.expectMessage("[message=Not Found]");
     restProducerInvocation.findRestOperation();
   }
 
   @Test
-  public void findRestOperationNormal(@Mocked MicroserviceMeta 
microserviceMeta,
-      @Mocked ServicePathManager servicePathManager, @Mocked OperationLocator 
locator) {
+  public void findRestOperationNormal(@Mocked ServicePathManager 
servicePathManager,
+      @Mocked OperationLocator locator) {
     requestEx = new AbstractHttpServletRequest() {
       @Override
       public String getRequestURI() {
@@ -190,8 +193,6 @@ public String getHeader(String name) {
     Map<String, String> pathVars = new HashMap<>();
     new Expectations(ServicePathManager.class) {
       {
-        microserviceMetaManager.ensureFindValue("ms");
-        result = microserviceMeta;
         ServicePathManager.getServicePathManager(microserviceMeta);
         result = servicePathManager;
         servicePathManager.producerLocateOperation(anyString, anyString);
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java 
b/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
index 38793cd10..70c66f89b 100644
--- a/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
+++ b/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.core;
 
+import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
 import org.apache.servicecomb.core.provider.consumer.ConsumerProviderManager;
 import org.apache.servicecomb.core.provider.producer.ProducerProviderManager;
@@ -64,6 +65,10 @@ public void onApplicationEvent(ApplicationEvent event) {
       }
 
       if (SCBEngine.getInstance().getBootListenerList() == null) {
+        //SCBEngine init first, hence we do not need worry that when other 
beans need use the
+        //producer microserviceMeta, the SCBEngine is not inited.
+        String serviceName = RegistryUtils.getMicroservice().getServiceName();
+        SCBEngine.getInstance().setProducerMicroserviceMeta(new 
MicroserviceMeta(serviceName));
         
SCBEngine.getInstance().setProducerProviderManager(applicationContext.getBean(ProducerProviderManager.class));
         
SCBEngine.getInstance().setConsumerProviderManager(applicationContext.getBean(ConsumerProviderManager.class));
         
SCBEngine.getInstance().setTransportManager(applicationContext.getBean(TransportManager.class));
diff --git a/core/src/main/java/org/apache/servicecomb/core/CseContext.java 
b/core/src/main/java/org/apache/servicecomb/core/CseContext.java
index e372d0aff..45b841570 100644
--- a/core/src/main/java/org/apache/servicecomb/core/CseContext.java
+++ b/core/src/main/java/org/apache/servicecomb/core/CseContext.java
@@ -19,7 +19,6 @@
 
 import javax.inject.Inject;
 
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
 import org.apache.servicecomb.core.definition.loader.SchemaLoader;
 import org.apache.servicecomb.core.definition.schema.ConsumerSchemaFactory;
@@ -39,8 +38,6 @@ public static CseContext getInstance() {
 
   private SchemaLoader schemaLoader;
 
-  private MicroserviceMetaManager microserviceMetaManager;
-
   private ConsumerSchemaFactory consumerSchemaFactory;
 
   private ConsumerProviderManager consumerProviderManager;
@@ -59,10 +56,6 @@ public SchemaLoader getSchemaLoader() {
     return schemaLoader;
   }
 
-  public MicroserviceMetaManager getMicroserviceMetaManager() {
-    return microserviceMetaManager;
-  }
-
   public ConsumerSchemaFactory getConsumerSchemaFactory() {
     return consumerSchemaFactory;
   }
@@ -88,11 +81,6 @@ public void setSwaggerEnvironment(SwaggerEnvironment 
swaggerEnvironment) {
     this.swaggerEnvironment = swaggerEnvironment;
   }
 
-  @Inject
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
-
   @Inject
   public void setSchemaLoader(SchemaLoader schemaLoader) {
     this.schemaLoader = schemaLoader;
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 6e0aefec1..1bc46c94e 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -25,6 +25,7 @@
 import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.core.BootListener.BootEvent;
 import org.apache.servicecomb.core.BootListener.EventType;
+import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
 import org.apache.servicecomb.core.endpoint.AbstractEndpointsCache;
 import org.apache.servicecomb.core.event.InvocationFinishEvent;
@@ -55,6 +56,8 @@
 
   private ConsumerProviderManager consumerProviderManager;
 
+  private MicroserviceMeta producerMicroserviceMeta;
+
   private TransportManager transportManager;
 
   private SchemaListenerManager schemaListenerManager;
@@ -67,6 +70,7 @@
 
   private volatile SCBStatus status = SCBStatus.DOWN;
 
+
   public void setStatus(SCBStatus status) {
     this.status = status;
   }
@@ -298,4 +302,12 @@ public ReferenceConfig getReferenceConfigForInvoke(String 
microserviceName) {
 
     return consumerProviderManager.getReferenceConfig(microserviceName);
   }
+
+  public MicroserviceMeta getProducerMicroserviceMeta() {
+    return producerMicroserviceMeta;
+  }
+
+  public void setProducerMicroserviceMeta(MicroserviceMeta 
producerMicroserviceMeta) {
+    this.producerMicroserviceMeta = producerMicroserviceMeta;
+  }
 }
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java
 
b/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java
deleted file mode 100644
index a6b0c2ddc..000000000
--- 
a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.servicecomb.core.definition;
-
-import java.util.Collection;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.foundation.common.RegisterManager;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
-import org.springframework.stereotype.Component;
-
-/**
- * key为microserviceName(app内部)或者appId:microserviceName(跨app)
- */
-@Component
-public class MicroserviceMetaManager extends RegisterManager<String, 
MicroserviceMeta> {
-  private static final String MICROSERVICE_SCHEMA_MGR = "microservice meta 
manager";
-
-  private final Object lock = new Object();
-
-  public MicroserviceMetaManager() {
-    super(MICROSERVICE_SCHEMA_MGR);
-  }
-
-  public SchemaMeta ensureFindSchemaMeta(String microserviceName, String 
schemaId) {
-    MicroserviceMeta microserviceMeta = ensureFindValue(microserviceName);
-    return microserviceMeta.ensureFindSchemaMeta(schemaId);
-  }
-
-  public Collection<SchemaMeta> getAllSchemaMeta(String microserviceName) {
-    MicroserviceMeta microserviceMeta = ensureFindValue(microserviceName);
-    return microserviceMeta.getSchemaMetas();
-  }
-
-  public MicroserviceMeta getOrCreateMicroserviceMeta(Microservice 
microservice) {
-    String microserviceName = microservice.getServiceName();
-    MicroserviceMeta microserviceMeta = 
getOrCreateMicroserviceMeta(microserviceName);
-    if (!StringUtils.isEmpty(microservice.getAlias())) {
-      if (findValue(microservice.getAlias()) == null) {
-        register(microservice.getAlias(), microserviceMeta);
-      }
-    }
-
-    return microserviceMeta;
-  }
-
-  public MicroserviceMeta getOrCreateMicroserviceMeta(String microserviceName) 
{
-    MicroserviceMeta microserviceMeta = findValue(microserviceName);
-    if (microserviceMeta == null) {
-      synchronized (lock) {
-        microserviceMeta = findValue(microserviceName);
-        if (microserviceMeta == null) {
-          microserviceMeta = new MicroserviceMeta(microserviceName);
-          register(microserviceName, microserviceMeta);
-        }
-      }
-    }
-
-    return microserviceMeta;
-  }
-}
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
 
b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
index 65e9bd4be..e58c0f4ba 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
@@ -21,10 +21,8 @@
 import java.util.Collection;
 import java.util.List;
 
-import javax.inject.Inject;
-
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -34,32 +32,26 @@
  */
 @Component
 public class SchemaListenerManager {
+
   @Autowired(required = false)
   private List<SchemaListener> schemaListenerList = new ArrayList<>();
 
-  @Inject
-  private MicroserviceMetaManager microserviceMetaManager;
-
   public void setSchemaListenerList(List<SchemaListener> schemaListenerList) {
     this.schemaListenerList = schemaListenerList;
   }
 
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
-
   public void notifySchemaListener(MicroserviceMeta... microserviceMetas) {
     List<SchemaMeta> schemaMetaList = new ArrayList<>();
     for (MicroserviceMeta microserviceMeta : microserviceMetas) {
       schemaMetaList.addAll(microserviceMeta.getSchemaMetas());
     }
-
     notifySchemaListener(schemaMetaList.toArray(new 
SchemaMeta[schemaMetaList.size()]));
   }
 
   public void notifySchemaListener() {
-    Collection<MicroserviceMeta> microserviceMetas = 
microserviceMetaManager.values();
-    notifySchemaListener(microserviceMetas.toArray(new 
MicroserviceMeta[microserviceMetas.size()]));
+    //only one instance
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
+    notifySchemaListener(microserviceMeta);
   }
 
   public void notifySchemaListener(SchemaMeta... schemaMetas) {
@@ -73,13 +65,13 @@ public void notifySchemaListener(List<SchemaMeta> 
schemaMetaList) {
     notifySchemaListener(schemaMetas);
   }
 
-  public SchemaMeta ensureFindSchemaMeta(String microserviceName, String 
schemaId) {
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.ensureFindValue(microserviceName);
+  public SchemaMeta ensureFindSchemaMeta(String schemaId) {
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     return microserviceMeta.ensureFindSchemaMeta(schemaId);
   }
 
-  public Collection<SchemaMeta> getAllSchemaMeta(String microserviceName) {
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.ensureFindValue(microserviceName);
+  public Collection<SchemaMeta> getAllSchemaMeta() {
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     return microserviceMeta.getSchemaMetas();
   }
 }
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
 
b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
index aa612c324..95f9cd539 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
@@ -19,13 +19,11 @@
 
 import java.util.List;
 
-import javax.inject.Inject;
-
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.servicecomb.core.Handler;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.SchemaUtils;
 import org.apache.servicecomb.core.handler.ConsumerHandlerManager;
@@ -48,13 +46,6 @@
 public class SchemaLoader {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(SchemaLoader.class);
 
-  @Inject
-  protected MicroserviceMetaManager microserviceMetaManager;
-
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
-
   /*
    * resource的路径格式,至少是以这个形式结尾:schemaId.yaml
    */
@@ -77,13 +68,12 @@ public SchemaMeta registerSchema(String microserviceName, 
String schemaId, Strin
       throw new Error(String.format("Parse the swagger for %s:%s failed", 
microserviceName, schemaId));
     }
 
-    return registerSchema(microserviceName, schemaId, swagger);
+    return registerSchema(schemaId, swagger);
   }
 
-  public SchemaMeta registerSchema(String microserviceName, String schemaId,
+  public SchemaMeta registerSchema(String schemaId,
       Swagger swagger) {
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
-
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     return registerSchema(microserviceMeta, schemaId, swagger);
   }
 
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
 
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
index 9d62c52b7..0db01dc81 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
@@ -22,7 +22,6 @@
 import javax.inject.Inject;
 
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.SchemaUtils;
 import org.apache.servicecomb.core.definition.loader.SchemaLoader;
@@ -40,8 +39,6 @@
  * 在producer场景中,如果本地没有契约,需要根据实现类动态生成契约
  */
 public abstract class AbstractSchemaFactory<CONTEXT extends SchemaContext> {
-  @Inject
-  protected MicroserviceMetaManager microserviceMetaManager;
 
   protected SchemaLoader schemaLoader;
 
@@ -53,10 +50,6 @@ public void setSchemaLoader(SchemaLoader schemaLoader) {
     this.schemaLoader = schemaLoader;
   }
 
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
-
   // 因为aop的存在,schemaInstance的class不一定等于schemaClass
   protected SchemaMeta getOrCreateSchema(CONTEXT context) {
     MicroserviceMeta microserviceMeta = context.getMicroserviceMeta();
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
 
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
index 87e7cb2d8..5b1d0c885 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
@@ -29,6 +29,7 @@
 import javax.inject.Inject;
 
 import org.apache.servicecomb.core.Const;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
@@ -74,11 +75,10 @@ public void setSwaggerEnv(SwaggerEnvironment swaggerEnv) {
   }
 
   // 只会在启动流程中调用
-  public SchemaMeta getOrCreateProducerSchema(String microserviceName, String 
schemaId,
+  public SchemaMeta getOrCreateProducerSchema( String schemaId,
       Class<?> producerClass,
       Object producerInstance) {
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
-
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     ProducerSchemaContext context = new ProducerSchemaContext();
     context.setMicroserviceMeta(microserviceMeta);
     context.setSchemaId(schemaId);
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
 
b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
index 1493d5923..2c7b2ffc3 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
@@ -17,14 +17,9 @@
 
 package org.apache.servicecomb.core.provider.consumer;
 
-import javax.inject.Inject;
-
 import org.apache.servicecomb.core.ConsumerProvider;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 
 public abstract class AbstractConsumerProvider implements ConsumerProvider {
-  @Inject
-  protected MicroserviceMetaManager microserviceMetaManager;
 
   @Override
   public void init() throws Exception {
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
 
b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
index b9b6b415c..12a555b1a 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
@@ -22,13 +22,11 @@
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 
-import javax.inject.Inject;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.servicecomb.core.BootListener;
 import org.apache.servicecomb.core.ProducerProvider;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.SchemaUtils;
@@ -46,18 +44,14 @@
   @Autowired(required = false)
   private List<ProducerProvider> producerProviderList = 
Collections.emptyList();
 
-  @Inject
-  private MicroserviceMetaManager microserviceMetaManager;
-
   private MicroserviceMeta microserviceMeta;
 
   public void init() throws Exception {
     for (ProducerProvider provider : producerProviderList) {
       provider.init();
     }
-
     Microservice microservice = RegistryUtils.getMicroservice();
-    microserviceMeta = 
microserviceMetaManager.getOrCreateMicroserviceMeta(microservice);
+    microserviceMeta = SCBEngine.getInstance().getProducerMicroserviceMeta();
     for (SchemaMeta schemaMeta : microserviceMeta.getSchemaMetas()) {
       String content = SchemaUtils.swaggerToString(schemaMeta.getSwagger());
       microservice.addSchema(schemaMeta.getSchemaId(), content);
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java 
b/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
index 8d9c5b543..a7a9028e5 100644
--- a/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
@@ -22,8 +22,8 @@
 
 import org.apache.servicecomb.core.CseContext;
 import org.apache.servicecomb.core.Handler;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import 
org.apache.servicecomb.core.definition.PrivateMicroserviceVersionMetaFactory;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
@@ -55,7 +55,6 @@
  * when SCBEngine finished, UnitTestMeta will be deleted
  */
 public class UnitTestMeta {
-  private MicroserviceMetaManager microserviceMetaManager = new 
MicroserviceMetaManager();
 
   private SchemaListenerManager schemaListenerManager = new 
SchemaListenerManager();
 
@@ -69,6 +68,8 @@ public ConsumerProviderManager getConsumerProviderManager() {
 
   private SchemaLoader schemaLoader = new SchemaLoader();
 
+  private MicroserviceMeta microserviceMeta;
+
   private ServiceRegistry serviceRegistry;
 
   public ServiceRegistry getServiceRegistry() {
@@ -85,13 +86,12 @@ public void init() {
     serviceRegistry.init();
     serviceRegistry.getAppManager().setMicroserviceVersionFactory(new 
PrivateMicroserviceVersionMetaFactory());
     RegistryUtils.setServiceRegistry(serviceRegistry);
-
-    schemaLoader.setMicroserviceMetaManager(microserviceMetaManager);
-
+    microserviceMeta = new 
MicroserviceMeta(RegistryUtils.getMicroservice().getServiceName());
+    SCBEngine.getInstance().setProducerMicroserviceMeta(microserviceMeta);
     consumerProviderManager = new ConsumerProviderManager();
 
     consumerSchemaFactory = new ConsumerSchemaFactory();
-    consumerSchemaFactory.setMicroserviceMetaManager(microserviceMetaManager);
+
     consumerSchemaFactory.setSchemaLoader(schemaLoader);
 
     
consumerProviderManager.setAppManager(RegistryUtils.getServiceRegistry().getAppManager());
@@ -128,18 +128,13 @@ public UnitTestMeta() {
     init();
   }
 
-
-  public MicroserviceMetaManager getMicroserviceMetaManager() {
-    return microserviceMetaManager;
-  }
-
   public SchemaMeta getOrCreateSchemaMeta(Class<?> impl) {
     return getOrCreateSchemaMeta("app", "test", impl.getName(), impl);
   }
 
   public SchemaMeta getOrCreateSchemaMeta(String appId, String 
microserviceName, String schemaId, Class<?> impl) {
     String longName = appId + ":" + microserviceName;
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.getOrCreateMicroserviceMeta(longName);
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     SchemaMeta schemaMeta = microserviceMeta.findSchemaMeta(schemaId);
     if (schemaMeta != null) {
       return schemaMeta;
diff --git a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java 
b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
index 9f91589a8..3416048ee 100644
--- a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
+++ b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
@@ -19,14 +19,9 @@
 
 import org.apache.servicecomb.core.definition.CommonService;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
-import org.apache.servicecomb.swagger.generator.core.utils.ClassUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
-import io.swagger.models.Info;
-import io.swagger.models.Swagger;
-
 public class TestDefinition {
   @Test
   public void testCommonService() {
@@ -68,23 +63,4 @@ public void testMicroServiceMeta() {
       Assert.assertNotNull(e);
     }
   }
-
-  @Test
-  public void testMicroserviceMetaManager() throws Exception {
-    MicroserviceMetaManager microserviceMetaManager = new 
MicroserviceMetaManager();
-    microserviceMetaManager.getOrCreateMicroserviceMeta("app:testname");
-
-    Assert.assertEquals("microservice meta manager", 
microserviceMetaManager.getName());
-    Assert.assertEquals("Not allow register repeat data, name=%s, key=%s",
-        microserviceMetaManager.getRegisterErrorFmt());
-    Assert.assertEquals(0, 
microserviceMetaManager.getAllSchemaMeta("app:testname").size());
-
-    Swagger oSwagger = new Swagger();
-    Info oInfo = new Info();
-    oInfo.setVendorExtension("x-java-interface", "java.lang.String");
-    oSwagger.setInfo(oInfo);
-    Assert.assertEquals("java.lang.String",
-        
(ClassUtils.getInterfaceName(oSwagger.getInfo().getVendorExtensions())));
-    oInfo.setVendorExtension("x-java-class", "java.lang.String");
-  }
 }
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestOperationMeta.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestOperationMeta.java
index b4e15fad3..efd56eb4a 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/TestOperationMeta.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/TestOperationMeta.java
@@ -51,9 +51,9 @@ public void testOperationMeta() {
     Assert.assertEquals(schemaMeta, operationMeta.getSchemaMeta());
     Assert.assertEquals(Impl.class.getName() + ".test",
         operationMeta.getSchemaQualifiedName());
-    Assert.assertEquals("app:test." + Impl.class.getName() + ".test",
+    Assert.assertEquals("perfClient." + Impl.class.getName() + ".test",
         operationMeta.getMicroserviceQualifiedName());
-    Assert.assertEquals("app:test", operationMeta.getMicroserviceName());
+    Assert.assertEquals("perfClient", operationMeta.getMicroserviceName());
     Assert.assertEquals("test", operationMeta.getOperationId());
     Assert.assertEquals("x", operationMeta.getParamName(0));
 
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
index c7f0b4a15..74e47e830 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
@@ -20,7 +20,7 @@
 import java.util.Collections;
 
 import org.apache.servicecomb.core.CseContext;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.unittest.UnitTestMeta;
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
@@ -35,7 +35,6 @@
 import org.junit.Test;
 
 public class TestDynamicSchemaLoader {
-  private static MicroserviceMetaManager microserviceMetaManager = new 
MicroserviceMetaManager();
 
   private static SchemaLoader loader = new SchemaLoader();
 
@@ -44,7 +43,6 @@
   @BeforeClass
   public static void init() {
     new UnitTestMeta();
-    loader.setMicroserviceMetaManager(microserviceMetaManager);
 
     SchemaListenerManager schemaListenerManager = new SchemaListenerManager();
     schemaListenerManager.setSchemaListenerList(Collections.emptyList());
@@ -69,16 +67,21 @@ public static void teardown() {
   @Test
   public void testRegisterSchemas() {
     
DynamicSchemaLoader.INSTANCE.registerSchemas("classpath*:test/test/schema.yaml");
-    SchemaMeta schemaMeta = 
microserviceMetaManager.ensureFindSchemaMeta("perfClient", "schema");
+    SchemaMeta schemaMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta().ensureFindSchemaMeta("schema");
     Assert.assertEquals("cse.gen.app.perfClient.schema", 
schemaMeta.getPackageName());
   }
 
   @SuppressWarnings("deprecation")
   @Test
   public void testRegisterShemasAcrossApp() {
-    DynamicSchemaLoader.INSTANCE.registerSchemas("CSE:as", 
"classpath*:test/test/schema.yaml");
-    SchemaMeta schemaMeta = 
microserviceMetaManager.ensureFindSchemaMeta("CSE:as", "schema");
-    Assert.assertEquals("cse.gen.CSE.as.schema", schemaMeta.getPackageName());
+    //we can not register repeat data
+    init();
+    //as we can not set microserviceName any more, hence we should use the 
default name
+    DynamicSchemaLoader.INSTANCE
+        .registerSchemas(RegistryUtils.getMicroservice().getServiceName(), 
"classpath*:test/test/schema.yaml");
+    SchemaMeta schemaMeta =
+        
SCBEngine.getInstance().getProducerMicroserviceMeta().ensureFindSchemaMeta("schema");
+    Assert.assertEquals("cse.gen.app.perfClient.schema", 
schemaMeta.getPackageName());
   }
 
   @Test
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
index f32adff94..445cf1af7 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
@@ -19,7 +19,6 @@
 
 import java.util.Arrays;
 
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.junit.Assert;
 import org.junit.Before;
@@ -47,7 +46,6 @@ public void onSchemaLoaded(SchemaMeta... schemaMetas) {
 
     SchemaListenerManager mgr = new SchemaListenerManager();
     mgr.setSchemaListenerList(Arrays.asList(listener));
-    mgr.setMicroserviceMetaManager(new MicroserviceMetaManager());
 
     mgr.notifySchemaListener(schemaMeta);
   }
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
 
b/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
index 97f7ddbf3..1ab53101d 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
@@ -24,7 +24,6 @@
 import org.apache.servicecomb.core.Const;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.definition.loader.SchemaLoader;
@@ -77,12 +76,10 @@ public static void init() {
     ProducerArgumentsMapperFactory producerArgsMapperFactory = new 
ProducerArgumentsMapperFactory();
     producerArgsMapperFactory.setConverterMgr(converterMgr);
 
-    MicroserviceMetaManager microserviceMetaManager = new 
MicroserviceMetaManager();
     SchemaLoader schemaLoader = new SchemaLoader();
     CompositeSwaggerGeneratorContext compositeSwaggerGeneratorContext = new 
CompositeSwaggerGeneratorContext();
 
     producerSchemaFactory.setSwaggerEnv(swaggerEnv);
-    ReflectUtils.setField(producerSchemaFactory, "microserviceMetaManager", 
microserviceMetaManager);
     ReflectUtils.setField(producerSchemaFactory, "schemaLoader", schemaLoader);
     ReflectUtils.setField(producerSchemaFactory,
         "compositeSwaggerGeneratorContext",
@@ -111,8 +108,7 @@ public static void teardown() {
 
   @Test
   public void testGetOrCreateProducer() throws Exception {
-    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("app:ms",
-        "schema",
+    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("schema",
         TestProducerSchemaFactoryImpl.class,
         new TestProducerSchemaFactoryImpl());
     Swagger swagger = schemaMeta.getSwagger();
@@ -121,8 +117,8 @@ public void testGetOrCreateProducer() throws Exception {
     Assert.assertEquals("add", operationMeta.getOperationId());
 
     SwaggerProducerOperation producerOperation = 
operationMeta.getExtData(Const.PRODUCER_OPERATION);
-
-    Object addBody = 
Class.forName("cse.gen.app.ms.schema.addBody").newInstance();
+    //we can not set microserviceName any more,use the default name
+    Object addBody = 
Class.forName("cse.gen.app.perfClient.schema.addBody").newInstance();
     ReflectUtils.setField(addBody, "x", 1);
     ReflectUtils.setField(addBody, "y", 2);
     Invocation invocation = new Invocation((Endpoint) null, operationMeta, new 
Object[] {addBody}) {
@@ -151,9 +147,7 @@ public String getInvocationQualifiedName() {
   public void testGetOrCreateProducerWithPrefix() throws Exception {
     
ArchaiusUtils.setProperty(org.apache.servicecomb.serviceregistry.api.Const.REGISTER_URL_PREFIX,
 "true");
     
System.setProperty(org.apache.servicecomb.serviceregistry.api.Const.URL_PREFIX, 
"/pojo/test");
-
-    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("app:ms",
-        "schema2",
+    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("schema2",
         TestProducerSchemaFactoryImpl.class,
         new TestProducerSchemaFactoryImpl());
     OperationMeta operationMeta = schemaMeta.ensureFindOperation("add");
@@ -167,8 +161,7 @@ public void testGetOrCreateProducerWithPrefix() throws 
Exception {
 
   @Test
   public void testCompletableFuture() {
-    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("app:ms",
-        "schema3",
+    SchemaMeta schemaMeta = 
producerSchemaFactory.getOrCreateProducerSchema("schema3",
         TestProducerSchemaFactoryImpl.class,
         new TestProducerSchemaFactoryImpl());
     OperationMeta operationMeta = schemaMeta.ensureFindOperation("async");
diff --git 
a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
 
b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
index 0809f93fe..943183a0f 100644
--- 
a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
+++ 
b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
@@ -26,7 +26,6 @@
 import org.apache.servicecomb.core.BootListener.BootEvent;
 import org.apache.servicecomb.core.BootListener.EventType;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.FixedThreadExecutor;
 import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
@@ -42,9 +41,8 @@
 
 public class TestProducerProviderManager {
   @Test
-  public void allowedNoProvider(@Mocked MicroserviceMetaManager 
microserviceMetaManager) {
+  public void allowedNoProvider() {
     AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext();
-    
context.getBeanFactory().registerSingleton(microserviceMetaManager.getClass().getName(),
 microserviceMetaManager);
     context.register(ProducerProviderManager.class);
     // must not throw exception
     context.refresh();
diff --git 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappBootListener.java
 
b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappBootListener.java
deleted file mode 100644
index 491a5357f..000000000
--- 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappBootListener.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.servicecomb.demo.crossapp;
-
-import org.apache.servicecomb.core.BootListener;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CrossappBootListener implements BootListener {
-  @SuppressWarnings("deprecation")
-  @Override
-  public void onBootEvent(BootEvent event) {
-    if (EventType.BEFORE_CONSUMER_PROVIDER.equals(event.getEventType())) {
-      // 动态注册schemas目录下面的契约到当前服务
-      
org.apache.servicecomb.core.definition.loader.DynamicSchemaLoader.INSTANCE.registerSchemas("appServer:appService",
-          "classpath*:schemas/*.yaml");
-    }
-  }
-}
diff --git 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
index ce80bf803..7420815dd 100644
--- 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
+++ 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
@@ -47,20 +47,22 @@
 
   public void testSchemaNotChange() {
     LOGGER.info("ProducerTestsAfterBootup testing start");
+    //we can not set microserviceName any more
     SchemaMeta meta =
-        factory.getOrCreateProducerSchema("customer-service",
-            "test1",
+        factory.getOrCreateProducerSchema("test1",
             CodeFirstSpringmvcForSchema.class,
             new CodeFirstSpringmvcForSchema());
     String codeFirst = getSwaggerContent(meta.getSwagger());
-    
TestMgr.check("4d18e9b339136d68c7e5e83f4f302664c91465d9747a36334841e082d336516e",
+    
TestMgr.check("2986daa46b229ec125443122dd7b51ee9a64879f1750d0996f948ce0718685c7",
         RegistryUtils.calcSchemaSummary(codeFirst));
-    TestMgr.check(codeFirst.length(), 896);
+    TestMgr.check(codeFirst.length(), 889);
+
   }
 
   public void testRegisterPath() {
     TestMgr.check(RegistryUtils.getMicroservice().getPaths().size(), 10);
   }
+
   private String getSwaggerContent(Swagger swagger) {
     try {
       return writer.writeValueAsString(swagger);
diff --git 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
index 09d26c484..3c0a19927 100644
--- 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
+++ 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
@@ -363,6 +363,10 @@ public void refreshConfig(String configcenter, boolean 
wait) {
         LOGGER.error("encode failed. Error message: {}", e.getMessage());
         encodeServiceName = StringUtils.deleteWhitespace(serviceName);
       }
+      //just log in the debug level
+      if (LOGGER.isDebugEnabled()) {
+        LOGGER.debug("Updating remote config...");
+      }
       String path = uriConst.ITEMS + "?dimensionsInfo=" + encodeServiceName + 
"&revision="
           + ParseConfigUtils.getInstance().getCurrentVersionInfo();
       clientMgr.findThreadBindClientPool().runOnContext(client -> {
@@ -371,15 +375,18 @@ public void refreshConfig(String configcenter, boolean 
wait) {
           if (rsp.statusCode() == HttpResponseStatus.OK.code()) {
             rsp.bodyHandler(buf -> {
               try {
+                String oldRevision = 
ParseConfigUtils.getInstance().getCurrentVersionInfo();
                 parseConfigUtils
                     
.refreshConfigItems(JsonUtils.OBJ_MAPPER.readValue(buf.toString(),
                         new TypeReference<LinkedHashMap<String, Map<String, 
String>>>() {
                         }));
                 EventManager.post(new ConnSuccEvent());
+                LOGGER.info("Updating remote config is done.,revision has 
changed from {} to {}", oldRevision,
+                    ParseConfigUtils.getInstance().getCurrentVersionInfo());
               } catch (IOException e) {
                 EventManager.post(new ConnFailEvent(
-                    "config refresh result parse fail " + e.getMessage()));
-                LOGGER.error("Config refresh from {} failed. Error message is 
[{}].",
+                    "config update result parse fail " + e.getMessage()));
+                LOGGER.error("Config update from {} failed. Error message is 
[{}].",
                     configcenter,
                     e.getMessage());
               }
@@ -388,6 +395,10 @@ public void refreshConfig(String configcenter, boolean 
wait) {
           } else if (rsp.statusCode() == 
HttpResponseStatus.NOT_MODIFIED.code()) {
             //nothing changed
             EventManager.post(new ConnSuccEvent());
+            if (LOGGER.isDebugEnabled()) {
+              LOGGER.debug("Updating remote config is done. the revision {} 
has no change",
+                  ParseConfigUtils.getInstance().getCurrentVersionInfo());
+            }
             latch.countDown();
           } else {
             rsp.bodyHandler(buf -> {
@@ -395,7 +406,7 @@ public void refreshConfig(String configcenter, boolean 
wait) {
               latch.countDown();
             });
             EventManager.post(new ConnFailEvent("fetch config fail"));
-            LOGGER.error("Config refresh from {} failed.", configcenter);
+            LOGGER.error("Config update from {} failed.", configcenter);
           }
         }).setTimeout((BOOTUP_WAIT_TIME - 1) * 1000);
         Map<String, String> headers = new HashMap<>();
@@ -412,7 +423,7 @@ public void refreshConfig(String configcenter, boolean 
wait) {
                 null))));
         request.exceptionHandler(e -> {
           EventManager.post(new ConnFailEvent("fetch config fail"));
-          LOGGER.error("Config refresh from {} failed. Error message is [{}].",
+          LOGGER.error("Config update from {} failed. Error message is [{}].",
               configcenter,
               e.getMessage());
           latch.countDown();
@@ -420,13 +431,11 @@ public void refreshConfig(String configcenter, boolean 
wait) {
         request.end();
       });
       if (wait) {
-        LOGGER.info("Refreshing remote config...");
         try {
           latch.await(BOOTUP_WAIT_TIME, TimeUnit.SECONDS);
         } catch (InterruptedException e) {
           LOGGER.warn(e.getMessage());
         }
-        LOGGER.info("Refreshing remote config is done.");
       }
     }
   }
diff --git 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ParseConfigUtils.java
 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ParseConfigUtils.java
index 3dd95c8e7..d86bd545d 100644
--- 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ParseConfigUtils.java
+++ 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ParseConfigUtils.java
@@ -67,7 +67,7 @@ public void initWithUpdateHandler(UpdateHandler 
updateHandler) {
   }
 
   /*
-      as the data is returned, we can block the thread at a short time. 
consider that if the multiple verticle is deployed
+      as the data is returned, we can block the thread at a short time. 
consider that if the multiple verticles were deployed
       and if we use pull mode and push mode at the same time , we must share a 
common lock with all methods which would
       change the config setting
      */
@@ -82,7 +82,6 @@ public void refreshConfigItems(Map<String, Map<String, 
Object>> remoteItems) {
       multiDimensionItems.clear();
       multiDimensionItems.putAll(remoteItems);
       doRefreshItems();
-      LOGGER.debug("refresh config success");
     } finally {
       configLock.unlock();
     }
diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsBootListener.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsBootListener.java
index 51b7bfc47..ae0c40d8c 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsBootListener.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsBootListener.java
@@ -26,8 +26,6 @@
 import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
 import org.apache.servicecomb.metrics.core.publish.HealthCheckerRestPublisher;
 import org.apache.servicecomb.metrics.core.publish.MetricsRestPublisher;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.springframework.stereotype.Component;
 
 import com.netflix.spectator.api.Spectator;
@@ -56,17 +54,13 @@ public void onBootEvent(BootEvent event) {
   }
 
   private void registerSchemas() {
-    Microservice microservice = RegistryUtils.getMicroservice();
-
-    
producerSchemaFactory.getOrCreateProducerSchema(microservice.getServiceName(),
-        "healthEndpoint",
+    producerSchemaFactory.getOrCreateProducerSchema("healthEndpoint",
         HealthCheckerRestPublisher.class,
         new HealthCheckerRestPublisher());
 
     MetricsRestPublisher metricsRestPublisher =
         SPIServiceUtils.getTargetService(MetricsInitializer.class, 
MetricsRestPublisher.class);
-    
producerSchemaFactory.getOrCreateProducerSchema(microservice.getServiceName(),
-        "metricsEndpoint",
+    producerSchemaFactory.getOrCreateProducerSchema("metricsEndpoint",
         metricsRestPublisher.getClass(),
         metricsRestPublisher);
   }
diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
index 7d9b1f2d5..1637cfba9 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
@@ -22,9 +22,8 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.ThreadPoolExecutor;
 
-import org.apache.servicecomb.core.CseContext;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.FixedThreadExecutor;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
@@ -71,14 +70,11 @@ public void createThreadPoolMeters() {
 
   protected Map<Executor, Executor> collectionOperationExecutors() {
     Map<Executor, Executor> operationExecutors = new IdentityHashMap<>();
-
-    MicroserviceMetaManager microserviceMetaManager = 
CseContext.getInstance().getMicroserviceMetaManager();
-    for (MicroserviceMeta microserviceMeta : microserviceMetaManager.values()) 
{
-      for (OperationMeta operationMeta : microserviceMeta.getOperations()) {
-        operationExecutors.put(operationMeta.getExecutor(), 
operationMeta.getExecutor());
-      }
+    //only one instance in the values
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
+    for (OperationMeta operationMeta : microserviceMeta.getOperations()) {
+      operationExecutors.put(operationMeta.getExecutor(), 
operationMeta.getExecutor());
     }
-
     return operationExecutors;
   }
 
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
index ce2d4627a..75eabe80d 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsBootListener.java
@@ -27,13 +27,11 @@
 import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
 import org.apache.servicecomb.metrics.core.publish.HealthCheckerRestPublisher;
 import org.apache.servicecomb.metrics.core.publish.MetricsRestPublisher;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
 import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.junit.Assert;
 import org.junit.Test;
 
 import mockit.Deencapsulation;
-import mockit.Expectations;
 import mockit.Mock;
 import mockit.MockUp;
 
@@ -46,10 +44,10 @@ public void registerSchemas() {
 
     ProducerSchemaFactory producerSchemaFactory = new 
MockUp<ProducerSchemaFactory>() {
       @Mock
-      SchemaMeta getOrCreateProducerSchema(String microserviceName, String 
schemaId,
+      SchemaMeta getOrCreateProducerSchema(String schemaId,
           Class<?> producerClass,
           Object producerInstance) {
-        argsList.add(new Object[] {microserviceName, schemaId, producerClass, 
producerInstance});
+        argsList.add(new Object[] {schemaId, producerClass, producerInstance});
         return null;
       }
     }.getMockInstance();
@@ -57,29 +55,23 @@ SchemaMeta getOrCreateProducerSchema(String 
microserviceName, String schemaId,
 
     Microservice microservice = new Microservice();
     microservice.setServiceName("name");
-    new Expectations(RegistryUtils.class) {
-      {
-        RegistryUtils.getMicroservice();
-        result = microservice;
-      }
-    };
 
     BootEvent event = new BootEvent();
     event.setEventType(EventType.BEFORE_PRODUCER_PROVIDER);
     listener.onBootEvent(event);
 
     Object[] args = argsList.get(0);
-    Assert.assertEquals("name", args[0]);
-    Assert.assertEquals("healthEndpoint", args[1]);
-    Assert.assertEquals(HealthCheckerRestPublisher.class, args[2]);
-    Assert.assertEquals(HealthCheckerRestPublisher.class, args[3].getClass());
+    //we have remove parameter microserviceName
+    Assert.assertEquals("healthEndpoint", args[0]);
+    Assert.assertEquals(HealthCheckerRestPublisher.class, args[1]);
+    Assert.assertEquals(HealthCheckerRestPublisher.class, args[2].getClass());
 
     MetricsRestPublisher metricsRestPublisher =
         SPIServiceUtils.getTargetService(MetricsInitializer.class, 
MetricsRestPublisher.class);
     args = argsList.get(1);
-    Assert.assertEquals("name", args[0]);
-    Assert.assertEquals("metricsEndpoint", args[1]);
-    Assert.assertEquals(MetricsRestPublisher.class, args[2]);
-    Assert.assertSame(metricsRestPublisher, args[3]);
+    //we have remove parameter microserviceName
+    Assert.assertEquals("metricsEndpoint", args[0]);
+    Assert.assertEquals(MetricsRestPublisher.class, args[1]);
+    Assert.assertSame(metricsRestPublisher, args[2]);
   }
 }
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
index 116e05939..378743de2 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
@@ -28,8 +28,8 @@
 import java.util.concurrent.ThreadPoolExecutor;
 
 import org.apache.servicecomb.core.CseContext;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.executor.FixedThreadExecutor;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
@@ -43,7 +43,6 @@
 import com.netflix.spectator.api.DefaultRegistry;
 import com.netflix.spectator.api.ManualClock;
 import com.netflix.spectator.api.Registry;
-
 import mockit.Expectations;
 import mockit.Mock;
 import mockit.MockUp;
@@ -72,8 +71,6 @@
   @Mocked
   ApplicationContext applicationContext;
 
-  @Mocked
-  MicroserviceMetaManager microserviceMetaManager;
 
   @Mocked
   MicroserviceMeta microserviceMeta;
@@ -89,6 +86,12 @@
 
   @Test
   public void init() {
+    new Expectations(SCBEngine.class) {
+      {
+        SCBEngine.getInstance().getProducerMicroserviceMeta();
+        result = microserviceMeta;
+      }
+    };
     new Expectations(SPIServiceUtils.class) {
       {
         SPIServiceUtils.getTargetService(MetricsInitializer.class, 
DefaultRegistryInitializer.class);
@@ -97,7 +100,6 @@ public void init() {
         result = registry;
       }
     };
-
     Map<String, Executor> beanExecutors = new HashMap<>();
     beanExecutors.put("executor", executor);
     beanExecutors.put("fixedThreadExecutor", fixedThreadExecutor);
@@ -113,10 +115,6 @@ public void init() {
 
     new Expectations(CseContext.getInstance()) {
       {
-        CseContext.getInstance().getMicroserviceMetaManager();
-        result = microserviceMetaManager;
-        microserviceMetaManager.values();
-        result = Arrays.asList(microserviceMeta);
         microserviceMeta.getOperations();
         result = Arrays.asList(operationMetaExecutor, 
operationMetaSameExecutor, operationMetaFixedThreadExecutor);
         operationMetaExecutor.getExecutor();
diff --git 
a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/PojoProducerProvider.java
 
b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/PojoProducerProvider.java
index cd333de20..119831640 100644
--- 
a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/PojoProducerProvider.java
+++ 
b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/PojoProducerProvider.java
@@ -27,8 +27,6 @@
 import org.apache.servicecomb.provider.pojo.instance.SpringInstanceFactory;
 import org.apache.servicecomb.provider.pojo.schema.PojoProducerMeta;
 import org.apache.servicecomb.provider.pojo.schema.PojoProducers;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -56,10 +54,8 @@ public void init() throws Exception {
     for (PojoProducerMeta pojoProducerMeta : pojoProducers.getProducers()) {
       initPojoProducerMeta(pojoProducerMeta);
 
-      Microservice microservice = RegistryUtils.getMicroservice();
       try {
         producerSchemaFactory.getOrCreateProducerSchema(
-            microservice.getServiceName(),
             pojoProducerMeta.getSchemaId(),
             pojoProducerMeta.getInstanceClass(),
             pojoProducerMeta.getInstance());
diff --git 
a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
 
b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
index bea8107ec..d3e46c065 100644
--- 
a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
+++ 
b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
@@ -17,7 +17,6 @@
 
 package org.apache.servicecomb.provider.common;
 
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.mockito.Mockito;
 import org.springframework.context.ApplicationContext;
@@ -26,7 +25,6 @@
 import mockit.MockUp;
 
 public class MockUtil {
-  MicroserviceMetaManager microserviceMetaManager = new 
MicroserviceMetaManager();
 
   private static MockUtil instance = new MockUtil();
 
diff --git 
a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/TestPojoProducerProvider.java
 
b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/TestPojoProducerProvider.java
index c13f14560..483299717 100644
--- 
a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/TestPojoProducerProvider.java
+++ 
b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/pojo/TestPojoProducerProvider.java
@@ -70,8 +70,6 @@ public void testPojoProducerProvider(@Injectable 
ProducerSchemaFactory factory,
         result = null;
         meta.getImplementation();
         result = "pojo:org.apache.servicecomb.provider.pojo.Person";
-        service.getServiceName();
-        result = "test";
       }
     };
     PojoProducerProvider provider = new PojoProducerProvider();
diff --git 
a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/RestProducerProvider.java
 
b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/RestProducerProvider.java
index 8150555a1..56daa2dae 100644
--- 
a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/RestProducerProvider.java
+++ 
b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/RestProducerProvider.java
@@ -23,8 +23,6 @@
 import org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory;
 import org.apache.servicecomb.core.provider.producer.AbstractProducerProvider;
 import org.apache.servicecomb.core.provider.producer.ProducerMeta;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -44,9 +42,7 @@ public String getName() {
   @Override
   public void init() throws Exception {
     for (ProducerMeta producerMeta : restProducers.getProducerMetaList()) {
-      Microservice microservice = RegistryUtils.getMicroservice();
       producerSchemaFactory.getOrCreateProducerSchema(
-          microservice.getServiceName(),
           producerMeta.getSchemaId(),
           producerMeta.getInstanceClass(),
           producerMeta.getInstance());
diff --git 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
index fd82cca14..4878c415d 100644
--- 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
+++ 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
@@ -23,11 +23,10 @@
 import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
 import org.apache.servicecomb.codec.protobuf.utils.WrapSchema;
 import org.apache.servicecomb.core.Const;
-import org.apache.servicecomb.core.CseContext;
 import org.apache.servicecomb.core.Endpoint;
 import org.apache.servicecomb.core.Invocation;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.core.invocation.InvocationFactory;
@@ -45,8 +44,6 @@
 public class HighwayServerInvoke {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(HighwayServerInvoke.class);
 
-  private MicroserviceMetaManager microserviceMetaManager = 
CseContext.getInstance().getMicroserviceMetaManager();
-
   private ProtobufFeature protobufFeature;
 
   private RequestHeader header;
@@ -74,10 +71,6 @@ public HighwayServerInvoke(Endpoint endpoint, 
ProtobufFeature protobufFeature) {
     this.protobufFeature = protobufFeature;
   }
 
-  public void setMicroserviceMetaManager(MicroserviceMetaManager 
microserviceMetaManager) {
-    this.microserviceMetaManager = microserviceMetaManager;
-  }
-
   public boolean init(TcpConnection connection, long msgId,
       RequestHeader header, Buffer bodyBuffer) {
     try {
@@ -103,7 +96,7 @@ private void doInit(TcpConnection connection, long msgId, 
RequestHeader header,
     this.msgId = msgId;
     this.header = header;
 
-    MicroserviceMeta microserviceMeta = 
microserviceMetaManager.ensureFindValue(header.getDestMicroservice());
+    MicroserviceMeta microserviceMeta = 
SCBEngine.getInstance().getProducerMicroserviceMeta();
     SchemaMeta schemaMeta = 
microserviceMeta.ensureFindSchemaMeta(header.getSchemaId());
     this.operationMeta = 
schemaMeta.ensureFindOperation(header.getOperationName());
     this.operationProtobuf = 
ProtobufManager.getOrCreateOperation(operationMeta);
diff --git 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
index 4f49fbc6f..d5556057b 100644
--- 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
+++ 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
@@ -16,17 +16,16 @@
  */
 package org.apache.servicecomb.transport.highway;
 
+import javax.xml.ws.Holder;
 import java.net.InetSocketAddress;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.xml.ws.Holder;
-
 import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
 import org.apache.servicecomb.codec.protobuf.utils.WrapSchema;
 import org.apache.servicecomb.core.CseContext;
 import org.apache.servicecomb.core.Endpoint;
+import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
 import org.apache.servicecomb.foundation.vertx.stream.BufferOutputStream;
@@ -36,16 +35,17 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import mockit.Expectations;
+import mockit.Mock;
+import mockit.MockUp;
+import mockit.Mocked;
+
 import io.protostuff.LinkedBuffer;
 import io.protostuff.ProtobufOutput;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.net.NetSocket;
 import io.vertx.core.net.impl.NetSocketImpl;
 import io.vertx.core.net.impl.SocketAddressImpl;
-import mockit.Expectations;
-import mockit.Mock;
-import mockit.MockUp;
-import mockit.Mocked;
 
 public class TestHighwayServerConnection {
   private static WrapSchema requestHeaderSchema =
@@ -56,9 +56,6 @@
 
   HighwayServerConnection connection;
 
-  @Mocked
-  MicroserviceMetaManager microserviceMetaManager;
-
   @Mocked
   Endpoint endpoint;
 
@@ -147,15 +144,14 @@ public void testRequestNormal(@Mocked MicroserviceMeta 
microserviceMeta, @Mocked
     Buffer headerBuffer = createBuffer(requestHeaderSchema, header);
 
     Buffer bodyBuffer = Buffer.buffer();
-
-    new Expectations(CseContext.getInstance()) {
+    new Expectations(SCBEngine.class) {
       {
-        CseContext.getInstance().getMicroserviceMetaManager();
-        result = microserviceMetaManager;
-
-        microserviceMetaManager.ensureFindValue(null);
+        SCBEngine.getInstance().getProducerMicroserviceMeta();
         result = microserviceMeta;
-
+      }
+    };
+    new Expectations(CseContext.getInstance()) {
+      {
         microserviceMeta.ensureFindSchemaMeta(header.getSchemaId());
         result = schemaMeta;
       }
diff --git 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
index 525b5e0d2..6a7d1327f 100644
--- 
a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
+++ 
b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
@@ -133,7 +133,6 @@ public void onFinish(InvocationFinishEvent event) {
     operationMeta.setExecutor(new ReactiveExecutor());
 
     HighwayServerInvoke highwayServerInvoke = new HighwayServerInvoke();
-    
highwayServerInvoke.setMicroserviceMetaManager(unitTestMeta.getMicroserviceMetaManager());
 
     RequestHeader requestHeader = MockUtil.getInstance().requestHeader;
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> delete useless MicroserviceMetaManager
> --------------------------------------
>
>                 Key: SCB-612
>                 URL: https://issues.apache.org/jira/browse/SCB-612
>             Project: Apache ServiceComb
>          Issue Type: Task
>          Components: Java-Chassis
>            Reporter: wujimin
>            Priority: Major
>              Labels: newbie
>
> in previous versions, consumer and producer microserviceMeta all managed by 
> MicroserviceMetaManager
>  
> currently:
> all consumer MicroserviceMeta managed by AppManager
> only producer MicroserviceMeta remains in MicroserviceMetaManager, there is 
> only one MicroserviceMeta instance, so MicroserviceMetaManager is useless
> just move producer MicroserviceMeta to SCBEngine is enough



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to