[
https://issues.apache.org/jira/browse/SCB-612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16578096#comment-16578096
]
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 6c5ccb3ac..662b64933 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -23,6 +23,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;
@@ -52,6 +53,8 @@
private ConsumerProviderManager consumerProviderManager;
+ private MicroserviceMeta producerMicroserviceMeta;
+
private TransportManager transportManager;
private SchemaListenerManager schemaListenerManager;
@@ -64,6 +67,7 @@
private volatile SCBStatus status = SCBStatus.DOWN;
+
public void setStatus(SCBStatus status) {
this.status = status;
}
@@ -293,4 +297,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..2ddebc7c9 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,11 +21,12 @@
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.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -34,32 +35,28 @@
*/
@Component
public class SchemaListenerManager {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(SchemaListenerManager.class);
+
@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) {
@@ -74,12 +71,22 @@ public void notifySchemaListener(List<SchemaMeta>
schemaMetaList) {
}
public SchemaMeta ensureFindSchemaMeta(String microserviceName, String
schemaId) {
- MicroserviceMeta microserviceMeta =
microserviceMetaManager.ensureFindValue(microserviceName);
+ if
(!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ throw new Error(String.format("miroserviceName : %s is different from
the default microserviceName %s",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName()));
+ }
+ MicroserviceMeta microserviceMeta =
SCBEngine.getInstance().getProducerMicroserviceMeta();
return microserviceMeta.ensureFindSchemaMeta(schemaId);
}
public Collection<SchemaMeta> getAllSchemaMeta(String microserviceName) {
- MicroserviceMeta microserviceMeta =
microserviceMetaManager.ensureFindValue(microserviceName);
+ if
(!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ throw new Error(String.format("miroserviceName : %s is different from
the default microserviceName %s",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName()));
+ }
+ 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..d4bca108b 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
*/
@@ -82,8 +73,13 @@ public SchemaMeta registerSchema(String microserviceName,
String schemaId, Strin
public SchemaMeta registerSchema(String microserviceName, String schemaId,
Swagger swagger) {
- MicroserviceMeta microserviceMeta =
microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
-
+ //check whether the microserviceName is right
+ if
(!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ throw new Error(String.format("miroserviceName : %s is different from
the default microserviceName: %s",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName()));
+ }
+ 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..77b005da3 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;
@@ -77,7 +78,13 @@ public void setSwaggerEnv(SwaggerEnvironment swaggerEnv) {
public SchemaMeta getOrCreateProducerSchema(String microserviceName, String
schemaId,
Class<?> producerClass,
Object producerInstance) {
- MicroserviceMeta microserviceMeta =
microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
+ if
(!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ throw new Error(String.format("miroserviceName : %s is different from
the default microserviceName :%s",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName()));
+ }
+
+ MicroserviceMeta microserviceMeta =
SCBEngine.getInstance().getProducerMicroserviceMeta();
ProducerSchemaContext context = new ProducerSchemaContext();
context.setMicroserviceMeta(microserviceMeta);
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..920101a16 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;
@@ -47,15 +47,15 @@
import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
-import io.swagger.models.Swagger;
import mockit.Mock;
import mockit.MockUp;
+import io.swagger.models.Swagger;
+
/**
* when SCBEngine finished, UnitTestMeta will be deleted
*/
public class UnitTestMeta {
- private MicroserviceMetaManager microserviceMetaManager = new
MicroserviceMetaManager();
private SchemaListenerManager schemaListenerManager = new
SchemaListenerManager();
@@ -69,6 +69,8 @@ public ConsumerProviderManager getConsumerProviderManager() {
private SchemaLoader schemaLoader = new SchemaLoader();
+ private MicroserviceMeta microserviceMeta;
+
private ServiceRegistry serviceRegistry;
public ServiceRegistry getServiceRegistry() {
@@ -85,13 +87,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 +129,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..1abf3b7c0 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,8 @@ public static void teardown() {
@Test
public void testGetOrCreateProducer() throws Exception {
- SchemaMeta schemaMeta =
producerSchemaFactory.getOrCreateProducerSchema("app:ms",
- "schema",
+ String serviceName = RegistryUtils.getMicroservice().getServiceName();
+ SchemaMeta schemaMeta =
producerSchemaFactory.getOrCreateProducerSchema(serviceName, "schema",
TestProducerSchemaFactoryImpl.class,
new TestProducerSchemaFactoryImpl());
Swagger swagger = schemaMeta.getSwagger();
@@ -121,8 +118,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 +148,8 @@ 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",
+ String serviceName = RegistryUtils.getMicroservice().getServiceName();
+ SchemaMeta schemaMeta =
producerSchemaFactory.getOrCreateProducerSchema(serviceName, "schema2",
TestProducerSchemaFactoryImpl.class,
new TestProducerSchemaFactoryImpl());
OperationMeta operationMeta = schemaMeta.ensureFindOperation("add");
@@ -167,8 +163,8 @@ public void testGetOrCreateProducerWithPrefix() throws
Exception {
@Test
public void testCompletableFuture() {
- SchemaMeta schemaMeta =
producerSchemaFactory.getOrCreateProducerSchema("app:ms",
- "schema3",
+ String serviceName = RegistryUtils.getMicroservice().getServiceName();
+ SchemaMeta schemaMeta =
producerSchemaFactory.getOrCreateProducerSchema(serviceName, "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
index 491a5357f..f462204c4 100644
---
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
@@ -18,6 +18,7 @@
package org.apache.servicecomb.demo.crossapp;
import org.apache.servicecomb.core.BootListener;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.springframework.stereotype.Component;
@Component
@@ -27,8 +28,12 @@
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");
+
+
org.apache.servicecomb.core.definition.loader.DynamicSchemaLoader.INSTANCE
+ .registerSchemas(RegistryUtils.getMicroservice().getServiceName(),
+ "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 1c12b407f..bd97b2eac 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
+ String serviceName = RegistryUtils.getMicroservice().getServiceName();
SchemaMeta meta =
- factory.getOrCreateProducerSchema("customer-service",
- "test1",
+ factory.getOrCreateProducerSchema(serviceName, "test1",
CodeFirstSpringmvcForSchema.class,
new CodeFirstSpringmvcForSchema());
String codeFirst = getSwaggerContent(meta.getSwagger());
-
TestMgr.check("07a48acef4cc1a7f2387d695923c49e98951a974e4f51cf1356d6878db48888f",
+
TestMgr.check("1453e7ddb60c5383d13ea367840be87d2238c99a4dad73712ef1773d5814f8fd",
RegistryUtils.calcSchemaSummary(codeFirst));
- TestMgr.check(codeFirst.length(), 899);
+ TestMgr.check(codeFirst.length(), 892);
}
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/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/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/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/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)