This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0-multi-instances by this
push:
new 13190c8 Cleanup ApplicationModel.defaultModel usage
13190c8 is described below
commit 13190c8378860c670b0a1e23b45928396761668d
Author: Albumen Kevin <[email protected]>
AuthorDate: Mon Aug 30 17:12:44 2021 +0800
Cleanup ApplicationModel.defaultModel usage
---
.../DefaultGovernanceRuleRepositoryImpl.java | 12 ++-
.../loadbalance/ShortestResponseLoadBalance.java | 10 +-
.../cluster/support/wrapper/AbstractCluster.java | 2 +-
.../ShortestResponseLoadBalanceTest.java | 4 +
.../dubbo/common/config/ConfigurationUtils.java | 102 ++++++++++++++++-----
.../common/infra/support/EnvironmentAdapter.java | 19 +++-
.../manager/DefaultExecutorRepository.java | 14 ++-
.../org/apache/dubbo/common/utils/NetUtils.java | 5 +-
.../apache/dubbo/rpc/model/ApplicationModel.java | 30 ++++++
.../org/apache/dubbo/rpc/model/FrameworkModel.java | 7 ++
.../org/apache/dubbo/rpc/model/ModuleModel.java | 6 ++
.../org/apache/dubbo/rpc/model/ScopeModelUtil.java | 9 +-
.../common/config/ConfigurationUtilsTest.java | 6 +-
.../org/apache/dubbo/config/DubboShutdownHook.java | 4 +-
.../dubbo/config/bootstrap/DubboBootstrap.java | 2 +-
.../dubbo/config/utils/ConfigValidationUtils.java | 4 +-
.../dubbo/config/utils/ReferenceConfigCache.java | 6 +-
.../dubbo/metadata/WritableMetadataService.java | 10 --
.../apache/dubbo/monitor/dubbo/MetricsFilter.java | 12 ++-
.../client/SelfHostMetaServiceDiscovery.java | 3 +-
.../StandardMetadataServiceURLBuilder.java | 14 ++-
.../store/InMemoryWritableMetadataService.java | 12 ++-
.../DefaultMigrationAddressComparator.java | 2 +-
.../client/migration/MigrationInvoker.java | 5 +-
.../client/migration/MigrationRuleListener.java | 2 +-
.../client/migration/model/MigrationRule.java | 2 +-
.../registry/integration/RegistryProtocol.java | 2 +-
.../support/CacheableFailbackRegistry.java | 33 +++----
.../ZookeeperServiceDiscoveryChangeWatcher.java | 7 +-
.../dubbo/remoting/api/NettyEventLoopFactory.java | 7 +-
.../org/apache/dubbo/remoting/api/SslContexts.java | 10 +-
.../remoting/exchange/codec/ExchangeCodec.java | 2 +-
.../dubbo/remoting/transport/CodecSupport.java | 1 +
.../transport/netty4/NettyEventLoopFactory.java | 8 +-
.../org/apache/dubbo/rpc/filter/GenericFilter.java | 12 ++-
.../rpc/protocol/dubbo/CallbackServiceCodec.java | 6 +-
.../protocol/dubbo/DecodeableRpcInvocation.java | 4 +-
.../rpc/protocol/dubbo/DecodeableRpcResult.java | 2 +-
.../dubbo/rpc/protocol/dubbo/DubboInvoker.java | 2 +-
.../dubbo/rpc/protocol/dubbo/DubboProtocol.java | 4 +-
.../rpc/protocol/dubbo/filter/FutureFilter.java | 8 +-
.../dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java | 6 +-
.../dubbo/rpc/protocol/grpc/GrpcProtocol.java | 3 +-
.../dubbo/rpc/protocol/rest/RestProtocol.java | 3 +-
.../rpc/protocol/tri/AbstractServerStream.java | 1 +
.../hessian2/dubbo/Hessian2FactoryInitializer.java | 3 +-
.../dubbo/WhitelistHessian2FactoryInitializer.java | 7 +-
47 files changed, 293 insertions(+), 142 deletions(-)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java
index c0633cd..61f8aeb 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java
@@ -19,8 +19,11 @@ package org.apache.dubbo.rpc.cluster.governance;
import org.apache.dubbo.common.config.configcenter.ConfigurationListener;
import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
-public class DefaultGovernanceRuleRepositoryImpl implements
GovernanceRuleRepository {
+public class DefaultGovernanceRuleRepositoryImpl implements
GovernanceRuleRepository, ScopeModelAware {
+
+ private ApplicationModel applicationModel;
@Override
public void addListener(String key, String group, ConfigurationListener
listener) {
@@ -47,8 +50,13 @@ public class DefaultGovernanceRuleRepositoryImpl implements
GovernanceRuleReposi
return null;
}
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
+
private DynamicConfiguration getDynamicConfiguration() {
- return
ApplicationModel.defaultModel().getApplicationEnvironment().getDynamicConfiguration().orElse(null);
+ return
ApplicationModel.ofNullable(applicationModel).getApplicationEnvironment().getDynamicConfiguration().orElse(null);
}
}
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java
index c0ecf61..7f0625a 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcStatus;
import org.apache.dubbo.rpc.cluster.Constants;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -41,11 +42,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
* if there are multiple invokers and the weights are not the same, then
random according to the total weight;
* if there are multiple invokers and the same weight, then randomly called.
*/
-public class ShortestResponseLoadBalance extends AbstractLoadBalance {
+public class ShortestResponseLoadBalance extends AbstractLoadBalance
implements ScopeModelAware {
public static final String NAME = "shortestresponse";
- private static final int SLIDE_PERIOD =
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration().getInt(Constants.SHORTEST_RESPONSE_SLIDE_PERIOD,
30_000);
+ private int SLIDE_PERIOD = 30_000;
private ConcurrentMap<RpcStatus, SlideWindowData> methodMap = new
ConcurrentHashMap<>();
@@ -53,6 +54,11 @@ public class ShortestResponseLoadBalance extends
AbstractLoadBalance {
private volatile long lastUpdateTime = System.currentTimeMillis();
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ SLIDE_PERIOD =
applicationModel.getApplicationEnvironment().getConfiguration().getInt(Constants.SHORTEST_RESPONSE_SLIDE_PERIOD,
30_000);
+ }
+
protected static class SlideWindowData {
private final static ExecutorService EXECUTOR_SERVICE =
Executors.newSingleThreadExecutor((new
NamedThreadFactory("Dubbo-slidePeriod-reset")));
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
index 684f372..fced5da 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
@@ -48,7 +48,7 @@ public abstract class AbstractCluster implements Cluster {
// AbstractClusterInvoker<T> last = clusterInvoker;
AbstractClusterInvoker<T> last = buildInterceptorInvoker(new
ClusterFilterInvoker<>(clusterInvoker));
- if
(Boolean.parseBoolean(ConfigurationUtils.getProperty(CLUSTER_INTERCEPTOR_COMPATIBLE_KEY,
"false"))) {
+ if
(Boolean.parseBoolean(ConfigurationUtils.getProperty(clusterInvoker.getDirectory().getConsumerUrl().getScopeModel(),
CLUSTER_INTERCEPTOR_COMPATIBLE_KEY, "false"))) {
return build27xCompatibleClusterInterceptors(clusterInvoker, last);
}
return last;
diff --git
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalanceTest.java
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalanceTest.java
index cfc317f..5130ad2 100644
---
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalanceTest.java
+++
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalanceTest.java
@@ -19,6 +19,8 @@ package org.apache.dubbo.rpc.cluster.loadbalance;
import org.apache.dubbo.common.utils.ReflectUtils;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcStatus;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
@@ -42,6 +44,7 @@ public class ShortestResponseLoadBalanceTest extends
LoadBalanceBaseTest {
int loop = 10000;
ShortestResponseLoadBalance lb = new ShortestResponseLoadBalance();
+ lb.setApplicationModel(ApplicationModel.defaultModel());
for (int i = 0; i < loop; i++) {
Invoker selected = lb.select(weightInvokersSR, null,
weightTestInvocation);
@@ -74,6 +77,7 @@ public class ShortestResponseLoadBalanceTest extends
LoadBalanceBaseTest {
//active -> 0
RpcStatus.endCount(weightInvoker5.getUrl(),
weightTestInvocation.getMethodName(), 5000L, true);
ShortestResponseLoadBalance lb = new ShortestResponseLoadBalance();
+ lb.setApplicationModel(ApplicationModel.defaultModel());
//reset slideWindow
Field lastUpdateTimeField =
ReflectUtils.forName(ShortestResponseLoadBalance.class.getName()).getDeclaredField("lastUpdateTime");
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
index 0cd82a5..c206f2b 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java
@@ -23,6 +23,8 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.io.IOException;
import java.io.StringReader;
@@ -51,8 +53,8 @@ public class ConfigurationUtils {
*
* @return
*/
- public static Configuration getSystemConfiguration() {
- return
ApplicationModel.defaultModel().getApplicationEnvironment().getSystemConfiguration();
+ public static Configuration getSystemConfiguration(ScopeModel scopeModel) {
+ return
ScopeModelUtil.getApplicationModel(scopeModel).getApplicationEnvironment().getSystemConfiguration();
}
/**
@@ -60,8 +62,9 @@ public class ConfigurationUtils {
*
* @return
*/
- public static Configuration getEnvConfiguration() {
- return
ApplicationModel.defaultModel().getApplicationEnvironment().getEnvironmentConfiguration();
+
+ public static Configuration getEnvConfiguration(ScopeModel scopeModel) {
+ return
ScopeModelUtil.getApplicationModel(scopeModel).getApplicationEnvironment().getEnvironmentConfiguration();
}
/**
@@ -71,19 +74,20 @@ public class ConfigurationUtils {
*
* @return
*/
- public static Configuration getGlobalConfiguration() {
- return
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration();
+
+ public static Configuration getGlobalConfiguration(ScopeModel scopeModel) {
+ return
ScopeModelUtil.getApplicationModel(scopeModel).getApplicationEnvironment().getConfiguration();
}
- public static Configuration getDynamicGlobalConfiguration() {
- return
ApplicationModel.defaultModel().getApplicationEnvironment().getDynamicGlobalConfiguration();
+ public static Configuration getDynamicGlobalConfiguration(ScopeModel
scopeModel) {
+ return
ScopeModelUtil.getApplicationModel(scopeModel).getApplicationEnvironment().getDynamicGlobalConfiguration();
}
// FIXME
@SuppressWarnings("deprecation")
- public static int getServerShutdownTimeout() {
+ public static int getServerShutdownTimeout(ScopeModel scopeModel) {
int timeout = DEFAULT_SERVER_SHUTDOWN_TIMEOUT;
- Configuration configuration = getGlobalConfiguration();
+ Configuration configuration = getGlobalConfiguration(scopeModel);
String value =
StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_KEY));
if (value != null && value.length() > 0) {
@@ -105,29 +109,29 @@ public class ConfigurationUtils {
return timeout;
}
- public static String getCachedDynamicProperty(String key, String
defaultValue) {
- String value = CACHED_DYNAMIC_PROPERTIES.computeIfAbsent(key, _k ->
ConfigurationUtils.getDynamicProperty(key, ""));
+ public static String getCachedDynamicProperty(ScopeModel scopeModel,
String key, String defaultValue) {
+ String value = CACHED_DYNAMIC_PROPERTIES.computeIfAbsent(key, _k ->
ConfigurationUtils.getDynamicProperty(scopeModel, key, ""));
return StringUtils.isEmpty(value) ? defaultValue : value;
}
- public static String getDynamicProperty(String property) {
- return getDynamicProperty(property, null);
+ public static String getDynamicProperty(ScopeModel scopeModel, String
property) {
+ return getDynamicProperty(scopeModel, property, null);
}
- public static String getDynamicProperty(String property, String
defaultValue) {
- return
StringUtils.trim(getDynamicGlobalConfiguration().getString(property,
defaultValue));
+ public static String getDynamicProperty(ScopeModel scopeModel, String
property, String defaultValue) {
+ return
StringUtils.trim(getDynamicGlobalConfiguration(scopeModel).getString(property,
defaultValue));
}
- public static String getProperty(String property) {
- return getProperty(property, null);
+ public static String getProperty(ScopeModel scopeModel, String property) {
+ return getProperty(scopeModel, property, null);
}
- public static String getProperty(String property, String defaultValue) {
- return StringUtils.trim(getGlobalConfiguration().getString(property,
defaultValue));
+ public static String getProperty(ScopeModel scopeModel, String property,
String defaultValue) {
+ return
StringUtils.trim(getGlobalConfiguration(scopeModel).getString(property,
defaultValue));
}
- public static int get(String property, int defaultValue) {
- return getGlobalConfiguration().getInt(property, defaultValue);
+ public static int get(ScopeModel scopeModel, String property, int
defaultValue) {
+ return getGlobalConfiguration(scopeModel).getInt(property,
defaultValue);
}
public static Map<String, String> parseProperties(String content) throws
IOException {
@@ -290,4 +294,58 @@ public class ConfigurationUtils {
ExtensionLoader<DynamicConfigurationFactory> loader =
extensionAccessor.getExtensionLoader(DynamicConfigurationFactory.class);
return loader.getOrDefaultExtension(name);
}
+
+ /**
+ * For compact single instance
+ */
+ @Deprecated
+ public static Configuration getSystemConfiguration() {
+ return
ApplicationModel.defaultModel().getApplicationEnvironment().getSystemConfiguration();
+ }
+
+ @Deprecated
+ public static Configuration getEnvConfiguration() {
+ return
ApplicationModel.defaultModel().getApplicationEnvironment().getEnvironmentConfiguration();
+ }
+
+ @Deprecated
+ public static Configuration getGlobalConfiguration() {
+ return
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration();
+ }
+
+ @Deprecated
+ public static Configuration getDynamicGlobalConfiguration() {
+ return
ApplicationModel.defaultModel().getApplicationEnvironment().getDynamicGlobalConfiguration();
+ }
+
+ @Deprecated
+ public static String getCachedDynamicProperty(String key, String
defaultValue) {
+ return getCachedDynamicProperty(ApplicationModel.defaultModel(), key,
defaultValue);
+ }
+
+ @Deprecated
+ public static String getDynamicProperty(String property) {
+ return getDynamicProperty(ApplicationModel.defaultModel(), property);
+ }
+
+ @Deprecated
+ public static String getDynamicProperty(String property, String
defaultValue) {
+ return getDynamicProperty(ApplicationModel.defaultModel(), property,
defaultValue);
+ }
+
+ @Deprecated
+ public static String getProperty(String property) {
+ return getProperty(ApplicationModel.defaultModel(), property);
+ }
+
+ @Deprecated
+ public static String getProperty(String property, String defaultValue) {
+ return getProperty(ApplicationModel.defaultModel(), property,
defaultValue);
+ }
+
+ @Deprecated
+ public static int get(String property, int defaultValue) {
+ return get(ApplicationModel.defaultModel(), property, defaultValue);
+ }
+
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/EnvironmentAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/EnvironmentAdapter.java
index 4a38446..e7b509c 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/EnvironmentAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/infra/support/EnvironmentAdapter.java
@@ -20,6 +20,8 @@ import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.common.infra.InfraAdapter;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.HashMap;
import java.util.Map;
@@ -31,7 +33,14 @@ import static
org.apache.dubbo.common.constants.CommonConstants.EQUAL_SPLIT_PATT
import static
org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;
@Activate
-public class EnvironmentAdapter implements InfraAdapter {
+public class EnvironmentAdapter implements InfraAdapter, ScopeModelAware {
+
+ private ApplicationModel applicationModel;
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
/**
* 1. OS Environment: DUBBO_LABELS=tag=pre;key=value
@@ -41,7 +50,7 @@ public class EnvironmentAdapter implements InfraAdapter {
public Map<String, String> getExtraAttributes(Map<String, String> params) {
Map<String, String> parameters = new HashMap<>();
- String rawLabels = ConfigurationUtils.getProperty(DUBBO_LABELS);
+ String rawLabels = ConfigurationUtils.getProperty(applicationModel,
DUBBO_LABELS);
if (StringUtils.isNotEmpty(rawLabels)) {
String[] labelPairs = SEMICOLON_SPLIT_PATTERN.split(rawLabels);
for (String pair : labelPairs) {
@@ -52,11 +61,11 @@ public class EnvironmentAdapter implements InfraAdapter {
}
}
- String rawKeys = ConfigurationUtils.getProperty(DUBBO_ENV_KEYS);
+ String rawKeys = ConfigurationUtils.getProperty(applicationModel,
DUBBO_ENV_KEYS);
if (StringUtils.isNotEmpty(rawKeys)) {
String[] keys = COMMA_SPLIT_PATTERN.split(rawKeys);
for (String key : keys) {
- String value = ConfigurationUtils.getProperty(key);
+ String value =
ConfigurationUtils.getProperty(applicationModel, key);
if (value != null) {
parameters.put(key, value);
}
@@ -67,6 +76,6 @@ public class EnvironmentAdapter implements InfraAdapter {
@Override
public String getAttribute(String key) {
- return ConfigurationUtils.getProperty(key);
+ return ConfigurationUtils.getProperty(applicationModel, key);
}
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java
index 0769276..5c93b23 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java
@@ -29,6 +29,7 @@ import org.apache.dubbo.common.utils.NamedThreadFactory;
import org.apache.dubbo.config.ConsumerConfig;
import org.apache.dubbo.config.ProviderConfig;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.List;
import java.util.Map;
@@ -52,7 +53,7 @@ import static
org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;
/**
* Consider implementing {@code Licycle} to enable executors shutdown when the
process stops.
*/
-public class DefaultExecutorRepository implements ExecutorRepository,
ExtensionAccessorAware {
+public class DefaultExecutorRepository implements ExecutorRepository,
ExtensionAccessorAware, ScopeModelAware {
private static final Logger logger =
LoggerFactory.getLogger(DefaultExecutorRepository.class);
private int DEFAULT_SCHEDULER_SIZE =
Runtime.getRuntime().availableProcessors();
@@ -82,6 +83,8 @@ public class DefaultExecutorRepository implements
ExecutorRepository, ExtensionA
private static final Object LOCK = new Object();
private ExtensionAccessor extensionAccessor;
+ private ApplicationModel applicationModel;
+
public DefaultExecutorRepository() {
for (int i = 0; i < DEFAULT_SCHEDULER_SIZE; i++) {
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor(
@@ -230,7 +233,7 @@ public class DefaultExecutorRepository implements
ExecutorRepository, ExtensionA
}
private Integer getExportThreadNum() {
- List<Integer> threadNum =
ApplicationModel.defaultModel().getApplicationConfigManager().getProviders()
+ List<Integer> threadNum =
ApplicationModel.ofNullable(applicationModel).getApplicationConfigManager().getProviders()
.stream()
.map(ProviderConfig::getExportThreadNum)
.filter(k -> k != null && k > 0)
@@ -277,7 +280,7 @@ public class DefaultExecutorRepository implements
ExecutorRepository, ExtensionA
}
private Integer getReferThreadNum() {
- List<Integer> threadNum =
ApplicationModel.defaultModel().getApplicationConfigManager().getConsumers()
+ List<Integer> threadNum =
ApplicationModel.ofNullable(applicationModel).getApplicationConfigManager().getConsumers()
.stream()
.map(ConsumerConfig::getReferThreadNum)
.filter(k -> k != null && k > 0)
@@ -369,4 +372,9 @@ public class DefaultExecutorRepository implements
ExecutorRepository, ExtensionA
public void setExtensionAccessor(ExtensionAccessor extensionAccessor) {
this.extensionAccessor = extensionAccessor;
}
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
index ec32eb9..6633841 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.logger.support.FailsafeLogger;
+import org.apache.dubbo.rpc.model.ScopeModel;
import java.io.IOException;
import java.net.Inet4Address;
@@ -236,8 +237,8 @@ public class NetUtils {
return host;
}
- public static String getIpByConfig() {
- String configIp = ConfigurationUtils.getProperty(DUBBO_IP_TO_BIND);
+ public static String getIpByConfig(ScopeModel scopeModel) {
+ String configIp = ConfigurationUtils.getProperty(scopeModel,
DUBBO_IP_TO_BIND);
if (configIp != null) {
return configIp;
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
index 8f8c89c..3af7956 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java
@@ -68,6 +68,14 @@ public class ApplicationModel extends ScopeModel {
postProcessAfterCreated();
}
+ public static ApplicationModel ofNullable(ApplicationModel
applicationModel) {
+ if (applicationModel != null) {
+ return applicationModel;
+ } else {
+ return defaultModel();
+ }
+ }
+
public static ApplicationModel defaultModel() {
if (defaultInstance == null) {
synchronized (ApplicationModel.class) {
@@ -102,11 +110,22 @@ public class ApplicationModel extends ScopeModel {
return
defaultModel().getApplicationServiceRepository().getReferredServices();
}
+ public Collection<ConsumerModel> allApplicationConsumerModels() {
+ // TODO: aggregate from sub modules
+ return
defaultModel().getApplicationServiceRepository().getReferredServices();
+ }
+
+
@Deprecated
public static Collection<ProviderModel> allProviderModels() {
return
defaultModel().getApplicationServiceRepository().getExportedServices();
}
+ public Collection<ProviderModel> allApplicationProviderModels() {
+ // TODO: aggregate from sub modules
+ return
defaultModel().getApplicationServiceRepository().getExportedServices();
+ }
+
@Deprecated
public static ProviderModel getProviderModel(String serviceKey) {
return
defaultModel().getApplicationServiceRepository().lookupExportedService(serviceKey);
@@ -225,4 +244,15 @@ public class ApplicationModel extends ScopeModel {
}
}
+ @Override
+ public String toString() {
+ return "ApplicationModel{" +
+ "moduleModels=" + moduleModels +
+ ", initFlag=" + initFlag +
+ ", environment=" + environment +
+ ", configManager=" + configManager +
+ ", serviceRepository=" + serviceRepository +
+ ", frameworkModel=" + frameworkModel +
+ '}';
+ }
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
index 438c465..8dee53d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
@@ -65,4 +65,11 @@ public class FrameworkModel extends ScopeModel {
public List<ApplicationModel> getApplicationModels() {
return applicationModels;
}
+
+ @Override
+ public String toString() {
+ return "FrameworkModel{" +
+ "applicationModels=" + applicationModels +
+ '}';
+ }
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
index 0ddb8b9..284d31a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ModuleModel.java
@@ -37,4 +37,10 @@ public class ModuleModel extends ScopeModel {
return applicationModel;
}
+ @Override
+ public String toString() {
+ return "ModuleModel{" +
+ "applicationModel=" + applicationModel +
+ '}';
+ }
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
index 7db702e..a23a84d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
@@ -27,8 +27,9 @@ public class ScopeModelUtil {
}
if (scopeModel instanceof ModuleModel) {
return (ModuleModel) scopeModel;
+ } else {
+ throw new IllegalArgumentException("Unable to get ModuleModel
from" + scopeModel);
}
- return null;
}
public static ApplicationModel getApplicationModel(ScopeModel scopeModel) {
@@ -40,8 +41,9 @@ public class ScopeModelUtil {
} else if (scopeModel instanceof ModuleModel) {
ModuleModel moduleModel = (ModuleModel) scopeModel;
return moduleModel.getApplicationModel();
+ } else {
+ throw new IllegalArgumentException("Unable to get ApplicationModel
from" + scopeModel);
}
- return null;
}
public static FrameworkModel getFrameworkModel(ScopeModel scopeModel) {
@@ -55,8 +57,9 @@ public class ScopeModelUtil {
return moduleModel.getApplicationModel().getFrameworkModel();
} else if (scopeModel instanceof FrameworkModel) {
return (FrameworkModel) scopeModel;
+ } else {
+ throw new IllegalArgumentException("Unable to get FrameworkModel
from" + scopeModel);
}
- return null;
}
public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type,
ScopeModel scopeModel) {
diff --git
a/dubbo-common/src/test/java/org/apache/dubbo/common/config/ConfigurationUtilsTest.java
b/dubbo-common/src/test/java/org/apache/dubbo/common/config/ConfigurationUtilsTest.java
index 1c8a549..d10ad6a 100644
---
a/dubbo-common/src/test/java/org/apache/dubbo/common/config/ConfigurationUtilsTest.java
+++
b/dubbo-common/src/test/java/org/apache/dubbo/common/config/ConfigurationUtilsTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.common.config;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -31,14 +33,14 @@ public class ConfigurationUtilsTest {
@Test
public void testGetServerShutdownTimeout () {
System.setProperty(SHUTDOWN_WAIT_KEY, " 10000");
- Assertions.assertEquals(10000,
ConfigurationUtils.getServerShutdownTimeout());
+ Assertions.assertEquals(10000,
ConfigurationUtils.getServerShutdownTimeout(ApplicationModel.defaultModel()));
System.clearProperty(SHUTDOWN_WAIT_KEY);
}
@Test
public void testGetProperty () {
System.setProperty(SHUTDOWN_WAIT_KEY, " 10000");
- Assertions.assertEquals("10000",
ConfigurationUtils.getProperty(SHUTDOWN_WAIT_KEY));
+ Assertions.assertEquals("10000",
ConfigurationUtils.getProperty(ApplicationModel.defaultModel(),
SHUTDOWN_WAIT_KEY));
System.clearProperty(SHUTDOWN_WAIT_KEY);
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
index 55ca3b5..9e03a23 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
@@ -19,7 +19,6 @@ package org.apache.dubbo.config;
import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -57,8 +56,7 @@ public class DubboShutdownHook extends Thread {
@Override
public void run() {
- String disableShutdownHookValue = (String)
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration()
- .getProperty(ConfigKeys.DUBBO_LIFECYCLE_DISABLE_SHUTDOWN_HOOK,
"false");
+ String disableShutdownHookValue =
System.getProperty(ConfigKeys.DUBBO_LIFECYCLE_DISABLE_SHUTDOWN_HOOK, "false");
if (Boolean.parseBoolean(disableShutdownHookValue)) {
if (logger.isWarnEnabled()) {
logger.warn("Shutdown hook is disabled, please shutdown dubbo
services by qos manually");
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index c8ce1de..584544f 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -1562,7 +1562,7 @@ public class DubboBootstrap {
} finally {
localMetadataService.releaseBlock();
}
- }, 0, ConfigurationUtils.get(METADATA_PUBLISH_DELAY_KEY,
DEFAULT_METADATA_PUBLISH_DELAY), TimeUnit.MILLISECONDS);
+ }, 0, ConfigurationUtils.get(applicationModel,
METADATA_PUBLISH_DELAY_KEY, DEFAULT_METADATA_PUBLISH_DELAY),
TimeUnit.MILLISECONDS);
}
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
index 7306dd5..3fc65af 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
@@ -233,7 +233,7 @@ public class ConfigValidationUtils {
// for registries enabled service discovery, automatically
register interface compatible addresses.
String registerMode;
if
(SERVICE_REGISTRY_PROTOCOL.equals(registryURL.getProtocol())) {
- registerMode = registryURL.getParameter(REGISTER_MODE_KEY,
ConfigurationUtils.getCachedDynamicProperty(DUBBO_REGISTER_MODE_DEFAULT_KEY,
DEFAULT_REGISTER_MODE_INSTANCE));
+ registerMode = registryURL.getParameter(REGISTER_MODE_KEY,
ConfigurationUtils.getCachedDynamicProperty(applicationModel,
DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_INSTANCE));
if (!isValidRegisterMode(registerMode)) {
registerMode = DEFAULT_REGISTER_MODE_INSTANCE;
}
@@ -247,7 +247,7 @@ public class ConfigValidationUtils {
result.add(interfaceCompatibleRegistryURL);
}
} else {
- registerMode = registryURL.getParameter(REGISTER_MODE_KEY,
ConfigurationUtils.getCachedDynamicProperty(DUBBO_REGISTER_MODE_DEFAULT_KEY,
DEFAULT_REGISTER_MODE_ALL));
+ registerMode = registryURL.getParameter(REGISTER_MODE_KEY,
ConfigurationUtils.getCachedDynamicProperty(applicationModel,
DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_ALL));
if (!isValidRegisterMode(registerMode)) {
registerMode = DEFAULT_REGISTER_MODE_INTERFACE;
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ReferenceConfigCache.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ReferenceConfigCache.java
index 33e4b7d..f95e00f 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ReferenceConfigCache.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ReferenceConfigCache.java
@@ -19,7 +19,7 @@ package org.apache.dubbo.config.utils;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ReferenceConfigBase;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import org.apache.dubbo.rpc.service.Destroyable;
import java.util.ArrayList;
@@ -180,7 +180,7 @@ public class ReferenceConfigCache {
return;
}
-
ApplicationModel.defaultModel().getApplicationConfigManager().removeConfig(rc);
+
ScopeModelUtil.getApplicationModel(rc.getScopeModel()).getApplicationConfigManager().removeConfig(rc);
rc.destroy();
Map<String, Object> proxiesOftype = proxies.get(type);
@@ -222,7 +222,7 @@ public class ReferenceConfigCache {
referredReferences.forEach((_k, referenceConfig) -> {
referenceConfig.destroy();
-
ApplicationModel.defaultModel().getApplicationConfigManager().removeConfig(referenceConfig);
+
ScopeModelUtil.getApplicationModel(referenceConfig.getScopeModel()).getApplicationConfigManager().removeConfig(referenceConfig);
});
proxies.forEach((_type, proxiesOfType) -> {
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
index 3e248c2..bd77ec5 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
@@ -20,7 +20,6 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelUtil;
@@ -35,15 +34,6 @@ import java.util.Set;
*/
@SPI(value = "default", scope = ExtensionScope.APPLICATION)
public interface WritableMetadataService extends MetadataService {
- /**
- * Gets the current Dubbo Service name
- *
- * @return non-null
- */
- @Override
- default String serviceName() {
- return ApplicationModel.defaultModel().getApplicationName();
- }
/**
* Exports a {@link URL}
diff --git
a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java
b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java
index d46462e..c2cce61 100644
---
a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java
+++
b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java
@@ -31,6 +31,8 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import org.apache.dubbo.rpc.support.RpcUtils;
import com.alibaba.fastjson.JSON;
@@ -68,13 +70,19 @@ import static
org.apache.dubbo.monitor.Constants.DUBBO_PROVIDER_METHOD;
import static org.apache.dubbo.monitor.Constants.METHOD;
import static org.apache.dubbo.monitor.Constants.SERVICE;
-public class MetricsFilter implements Filter, ExtensionAccessorAware {
+public class MetricsFilter implements Filter, ExtensionAccessorAware,
ScopeModelAware {
private static final Logger logger =
LoggerFactory.getLogger(MetricsFilter.class);
protected static volatile AtomicBoolean exported = new
AtomicBoolean(false);
private Integer port;
private String protocolName;
private ExtensionAccessor extensionAccessor;
+ private ApplicationModel applicationModel;
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws
RpcException {
@@ -243,7 +251,7 @@ public class MetricsFilter implements Filter,
ExtensionAccessorAware {
@Override
public URL getUrl() {
- return URL.valueOf(protocolName + "://" +
NetUtils.getIpByConfig() + ":" + port + "/" + MetricsService.class.getName());
+ return URL.valueOf(protocolName + "://" +
NetUtils.getIpByConfig(applicationModel) + ":" + port + "/" +
MetricsService.class.getName());
}
@Override
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/SelfHostMetaServiceDiscovery.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/SelfHostMetaServiceDiscovery.java
index c732240..30fc1d8 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/SelfHostMetaServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/SelfHostMetaServiceDiscovery.java
@@ -34,6 +34,7 @@ import
org.apache.dubbo.registry.client.metadata.MetadataUtils;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import com.alibaba.fastjson.JSONObject;
@@ -232,7 +233,7 @@ public abstract class SelfHostMetaServiceDiscovery
implements ServiceDiscovery,
// refer from MetadataUtils, this proxy is different from the one
used to refer exportedURL
MetadataService metadataService =
MetadataUtils.getMetadataServiceProxy(serviceInstance);
- String consumerId =
ApplicationModel.defaultModel().getApplicationName() + NetUtils.getLocalHost();
+ String consumerId =
ScopeModelUtil.getApplicationModel(registryURL.getScopeModel()).getApplicationName()
+ NetUtils.getLocalHost();
String metadata = metadataService.getAndListenInstanceMetadata(
consumerId, metadataString -> {
if(logger.isDebugEnabled()) {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
index 9de62fa..e407124 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.metadata.MetadataService;
import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.remoting.Constants;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import java.util.ArrayList;
import java.util.List;
@@ -48,12 +49,19 @@ import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataU
* @see MetadataService
* @since 2.7.5
*/
-public class StandardMetadataServiceURLBuilder implements
MetadataServiceURLBuilder {
+public class StandardMetadataServiceURLBuilder implements
MetadataServiceURLBuilder, ScopeModelAware {
private final Logger logger = LoggerFactory.getLogger(getClass());
public static final String NAME = "standard";
+ private ApplicationModel applicationModel;
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
+
/**
* Build the {@link URL urls} from {@link ServiceInstance#getMetadata()
the metadata} of {@link ServiceInstance}
*
@@ -88,7 +96,7 @@ public class StandardMetadataServiceURLBuilder implements
MetadataServiceURLBuil
.setPort(port)
.setProtocol(protocol)
.setPath(MetadataService.class.getName())
- .addParameter(TIMEOUT_KEY,
ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY,
DEFAULT_METADATA_TIMEOUT_VALUE))
+ .addParameter(TIMEOUT_KEY,
ConfigurationUtils.get(applicationModel, METADATA_PROXY_TIMEOUT_KEY,
DEFAULT_METADATA_TIMEOUT_VALUE))
.addParameter(SIDE_KEY, CONSUMER);
// add parameters
@@ -120,7 +128,7 @@ public class StandardMetadataServiceURLBuilder implements
MetadataServiceURLBuil
.setPort(port)
.setProtocol(DUBBO_PROTOCOL)
.setPath(MetadataService.class.getName())
- .addParameter(TIMEOUT_KEY,
ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY,
DEFAULT_METADATA_TIMEOUT_VALUE))
+ .addParameter(TIMEOUT_KEY,
ConfigurationUtils.get(applicationModel, METADATA_PROXY_TIMEOUT_KEY,
DEFAULT_METADATA_TIMEOUT_VALUE))
.addParameter(Constants.RECONNECT_KEY, false)
.addParameter(SIDE_KEY, CONSUMER)
.addParameter(GROUP_KEY, serviceName)
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
index d118b77..4026103 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java
@@ -120,6 +120,16 @@ public class InMemoryWritableMetadataService implements
WritableMetadataService,
this.metadataInfos = new ConcurrentHashMap<>();
}
+ /**
+ * Gets the current Dubbo Service name
+ *
+ * @return non-null
+ */
+ @Override
+ public String serviceName() {
+ return
ApplicationModel.ofNullable(applicationModel).getApplicationName();
+ }
+
@Override
public void setApplicationModel(ApplicationModel applicationModel) {
this.applicationModel = applicationModel;
@@ -305,7 +315,7 @@ public class InMemoryWritableMetadataService implements
WritableMetadataService,
public void blockUntilUpdated() {
try {
-
metadataSemaphore.tryAcquire(ConfigurationUtils.get(METADATA_PUBLISH_DELAY_KEY,
DEFAULT_METADATA_PUBLISH_DELAY) * 100L, TimeUnit.MILLISECONDS);
+
metadataSemaphore.tryAcquire(ConfigurationUtils.get(applicationModel,
METADATA_PUBLISH_DELAY_KEY, DEFAULT_METADATA_PUBLISH_DELAY) * 100L,
TimeUnit.MILLISECONDS);
metadataSemaphore.drainPermits();
updateLock.writeLock().lock();
} catch (InterruptedException e) {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
index 299602e..d37aa50 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java
@@ -68,7 +68,7 @@ public class DefaultMigrationAddressComparator implements
MigrationAddressCompar
if (configedThreshold != null && configedThreshold >= 0) {
rawThreshold = String.valueOf(configedThreshold);
}
- rawThreshold = StringUtils.isNotEmpty(rawThreshold) ? rawThreshold :
ConfigurationUtils.getCachedDynamicProperty(MIGRATION_THRESHOLD,
DEFAULT_THRESHOLD_STRING);
+ rawThreshold = StringUtils.isNotEmpty(rawThreshold) ? rawThreshold :
ConfigurationUtils.getCachedDynamicProperty(newInvoker.getUrl().getScopeModel(),
MIGRATION_THRESHOLD, DEFAULT_THRESHOLD_STRING);
float threshold;
try {
threshold = Float.parseFloat(rawThreshold);
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
index cf81b68..52402e2 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationInvoker.java
@@ -33,7 +33,6 @@ import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.Cluster;
import org.apache.dubbo.rpc.cluster.ClusterInvoker;
import org.apache.dubbo.rpc.cluster.Directory;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ConsumerModel;
import java.util.Map;
@@ -56,6 +55,7 @@ public class MigrationInvoker<T> implements
MigrationClusterInvoker<T> {
private Class<T> type;
private RegistryProtocol registryProtocol;
private MigrationRuleListener migrationRuleListener;
+ private ConsumerModel consumerModel;
private volatile ClusterInvoker<T> invoker;
private volatile ClusterInvoker<T> serviceDiscoveryInvoker;
@@ -89,8 +89,8 @@ public class MigrationInvoker<T> implements
MigrationClusterInvoker<T> {
this.type = type;
this.url = url;
this.consumerUrl = consumerUrl;
+ this.consumerModel = (ConsumerModel) consumerUrl.getServiceModel();
- ConsumerModel consumerModel =
ApplicationModel.defaultModel().getConsumerModel(consumerUrl.getServiceKey());
if (consumerModel != null) {
Object object =
consumerModel.getServiceMetadata().getAttribute("currentClusterInvoker");
Map<Registry, MigrationInvoker<?>> invokerMap;
@@ -313,7 +313,6 @@ public class MigrationInvoker<T> implements
MigrationClusterInvoker<T> {
if (serviceDiscoveryInvoker != null) {
serviceDiscoveryInvoker.destroy();
}
- ConsumerModel consumerModel =
ApplicationModel.defaultModel().getConsumerModel(consumerUrl.getServiceKey());
if (consumerModel != null) {
Object object =
consumerModel.getServiceMetadata().getAttribute("currentClusterInvoker");
Map<Registry, MigrationInvoker<?>> invokerMap;
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
index b903b77..0299761 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
@@ -108,7 +108,7 @@ public class MigrationRuleListener implements
RegistryProtocolListener, Configur
private int getDelay() {
int delay = 60000;
- String delayStr = ConfigurationUtils.getProperty(MIGRATION_DELAY_KEY);
+ String delayStr = ConfigurationUtils.getProperty(applicationModel,
MIGRATION_DELAY_KEY);
if (StringUtils.isEmpty(delayStr)) {
return delay;
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
index 39463fb..0ae30fa 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
@@ -168,7 +168,7 @@ public class MigrationRule {
step = MigrationStep.APPLICATION_FIRST;
step = Enum.valueOf(MigrationStep.class,
consumerURL.getParameter(MIGRATION_STEP_KEY,
-
ConfigurationUtils.getCachedDynamicProperty(DUBBO_SERVICEDISCOVERY_MIGRATION,
step.name())));
+
ConfigurationUtils.getCachedDynamicProperty(consumerURL.getScopeModel(),
DUBBO_SERVICEDISCOVERY_MIGRATION, step.name())));
}
return step;
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index fc2902b..6667cdb 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -861,7 +861,7 @@ public class RegistryProtocol implements Protocol,
ScopeModelAware {
executor.submit(() -> {
try {
- int timeout =
ConfigurationUtils.getServerShutdownTimeout();
+ int timeout =
ConfigurationUtils.getServerShutdownTimeout(subscribeUrl.getScopeModel());
if (timeout > 0) {
logger.info("Waiting " + timeout + "ms for registry to
notify all consumers before unexport. " +
"Usually, this is called when you use dubbo API");
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
index 561b794..2ef4e5c 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/CacheableFailbackRegistry.java
@@ -20,7 +20,6 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.URLBuilder;
import org.apache.dubbo.common.URLStrParser;
import org.apache.dubbo.common.config.ConfigurationUtils;
-import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;
@@ -32,6 +31,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.registry.NotifyListener;
+import org.apache.dubbo.rpc.model.ScopeModel;
import java.util.ArrayList;
import java.util.Collection;
@@ -66,32 +66,29 @@ public abstract class CacheableFailbackRegistry extends
FailbackRegistry {
private static final Logger logger =
LoggerFactory.getLogger(CacheableFailbackRegistry.class);
private static String[] VARIABLE_KEYS = new
String[]{ENCODED_TIMESTAMP_KEY, ENCODED_PID_KEY};
- protected final static Map<String, URLAddress> stringAddress = new
ConcurrentHashMap<>();
- protected final static Map<String, URLParam> stringParam = new
ConcurrentHashMap<>();
- private static final ScheduledExecutorService cacheRemovalScheduler;
- private static final int cacheRemovalTaskIntervalInMillis;
- private static final int cacheClearWaitingThresholdInMillis;
- private final static Map<ServiceAddressURL, Long> waitForRemove = new
ConcurrentHashMap<>();
- private static final Semaphore semaphore = new Semaphore(1);
+ protected Map<String, URLAddress> stringAddress = new
ConcurrentHashMap<>();
+ protected Map<String, URLParam> stringParam = new ConcurrentHashMap<>();
+ private ScheduledExecutorService cacheRemovalScheduler;
+ private int cacheRemovalTaskIntervalInMillis;
+ private int cacheClearWaitingThresholdInMillis;
+ private Map<ServiceAddressURL, Long> waitForRemove = new
ConcurrentHashMap<>();
+ private Semaphore semaphore = new Semaphore(1);
private final Map<String, String> extraParameters;
protected final Map<URL, Map<String, ServiceAddressURL>> stringUrls = new
HashMap<>();
- static {
- ExecutorRepository executorRepository =
ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
- cacheRemovalScheduler = executorRepository.nextScheduledExecutor();
- cacheRemovalTaskIntervalInMillis =
getIntConfig(CACHE_CLEAR_TASK_INTERVAL, 2 * 60 * 1000);
- cacheClearWaitingThresholdInMillis =
getIntConfig(CACHE_CLEAR_WAITING_THRESHOLD, 5 * 60 * 1000);
- }
-
public CacheableFailbackRegistry(URL url) {
super(url);
extraParameters = new HashMap<>(8);
extraParameters.put(CHECK_KEY, String.valueOf(false));
+
+ cacheRemovalScheduler =
url.getScopeModel().getExtensionLoader(ExecutorRepository.class).getDefaultExtension().nextScheduledExecutor();
+ cacheRemovalTaskIntervalInMillis = getIntConfig(url.getScopeModel(),
CACHE_CLEAR_TASK_INTERVAL, 2 * 60 * 1000);
+ cacheClearWaitingThresholdInMillis = getIntConfig(url.getScopeModel(),
CACHE_CLEAR_WAITING_THRESHOLD, 5 * 60 * 1000);
}
- protected static int getIntConfig(String key, int def) {
- String str = ConfigurationUtils.getProperty(key);
+ protected static int getIntConfig(ScopeModel scopeModel, String key, int
def) {
+ String str = ConfigurationUtils.getProperty(scopeModel, key);
int result = def;
if (StringUtils.isNotEmpty(str)) {
try {
@@ -305,7 +302,7 @@ public abstract class CacheableFailbackRegistry extends
FailbackRegistry {
protected abstract boolean isMatch(URL subscribeUrl, URL providerUrl);
- private static class RemovalTask implements Runnable {
+ private class RemovalTask implements Runnable {
@Override
public void run() {
logger.info("Clearing cached URLs, waiting to clear size " +
waitForRemove.size());
diff --git
a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java
b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java
index 66426d2..83d2333 100644
---
a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java
+++
b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java
@@ -22,7 +22,7 @@ import org.apache.dubbo.registry.client.ServiceDiscovery;
import org.apache.dubbo.registry.client.ServiceInstance;
import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;
import
org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import org.apache.curator.framework.api.CuratorWatcher;
import org.apache.zookeeper.WatchedEvent;
@@ -65,10 +65,11 @@ public class ZookeeperServiceDiscoveryChangeWatcher
implements CuratorWatcher {
this.serviceName = serviceName;
this.path = path;
this.latch = latch;
- this.notifier = new
RegistryNotifier(zookeeperServiceDiscovery.getDelay(),
ApplicationModel.defaultModel().getApplicationExecutorRepository().getServiceDiscoveryAddressNotificationExecutor())
{
+ this.notifier = new
RegistryNotifier(zookeeperServiceDiscovery.getDelay(),
+
ScopeModelUtil.getApplicationModel(zookeeperServiceDiscovery.getUrl().getScopeModel()).getApplicationExecutorRepository().getServiceDiscoveryAddressNotificationExecutor())
{
@Override
protected void doNotify(Object rawAddresses) {
- listeners.forEach(listener ->
listener.onEvent((ServiceInstancesChangedEvent)rawAddresses));
+ listeners.forEach(listener ->
listener.onEvent((ServiceInstancesChangedEvent) rawAddresses));
}
};
}
diff --git
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/NettyEventLoopFactory.java
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/NettyEventLoopFactory.java
index ec54e96..5fb5015 100644
---
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/NettyEventLoopFactory.java
+++
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/NettyEventLoopFactory.java
@@ -16,9 +16,7 @@
*/
package org.apache.dubbo.remoting.api;
-import org.apache.dubbo.common.config.Configuration;
import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.epoll.Epoll;
@@ -55,9 +53,8 @@ public class NettyEventLoopFactory {
}
private static boolean shouldEpoll() {
- Configuration configuration =
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration();
- if (configuration.getBoolean("netty.epoll.enable", false)) {
- String osName = configuration.getString("os.name");
+ if (Boolean.parseBoolean(System.getProperty("netty.epoll.enable",
"false"))) {
+ String osName = System.getProperty("os.name");
return osName.toLowerCase().contains("linux") &&
Epoll.isAvailable();
}
diff --git
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/SslContexts.java
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/SslContexts.java
index e40d5fc..71d8d87 100644
---
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/SslContexts.java
+++
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/SslContexts.java
@@ -21,7 +21,7 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.config.SslConfig;
import org.apache.dubbo.config.context.ConfigManager;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.OpenSsl;
@@ -39,7 +39,7 @@ public class SslContexts {
private static final Logger logger =
LoggerFactory.getLogger(SslContexts.class);
public static SslContext buildServerSslContext(URL url) {
- ConfigManager globalConfigManager =
ApplicationModel.defaultModel().getApplicationConfigManager();
+ ConfigManager globalConfigManager =
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationConfigManager();
SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() ->
new IllegalStateException("Ssl enabled, but no ssl cert information
provided!"));
SslContextBuilder sslClientContextBuilder;
@@ -68,7 +68,7 @@ public class SslContexts {
}
public static SslContext buildClientSslContext(URL url) {
- ConfigManager globalConfigManager =
ApplicationModel.defaultModel().getApplicationConfigManager();
+ ConfigManager globalConfigManager =
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationConfigManager();
SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() ->
new IllegalStateException("Ssl enabled, but no ssl cert information
provided!"));
SslContextBuilder builder = SslContextBuilder.forClient();
@@ -97,10 +97,6 @@ public class SslContexts {
}
}
- private static SslConfig getSslConfig() {
- return
ApplicationModel.defaultModel().getApplicationConfigManager().getSsl().orElseThrow(()
-> new IllegalStateException("Ssl enabled, but no ssl cert information
provided!"));
- }
-
/**
* Returns OpenSSL if available, otherwise returns the JDK provider.
*/
diff --git
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
index 552c61b..0063576 100644
---
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
+++
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
@@ -429,7 +429,7 @@ public class ExchangeCodec extends TelnetCodec {
try {
if (eventBytes != null) {
int dataLen = eventBytes.length;
- int threshold =
ConfigurationUtils.getSystemConfiguration().getInt("deserialization.event.size",
50);
+ int threshold =
ConfigurationUtils.getSystemConfiguration(channel.getUrl().getScopeModel()).getInt("deserialization.event.size",
50);
if (dataLen > threshold) {
throw new IllegalArgumentException("Event data too long,
actual size " + threshold + ", threshold " + threshold + " rejected for
security consideration.");
}
diff --git
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/CodecSupport.java
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/CodecSupport.java
index 03e2ac6..0995a1c 100644
---
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/CodecSupport.java
+++
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/CodecSupport.java
@@ -158,6 +158,7 @@ public class CodecSupport {
}
public static void checkSerialization(String path, String version, Byte
id) throws IOException {
+ // TODO: fetch from FrameworkModel
ServiceRepository repository =
ApplicationModel.defaultModel().getApplicationServiceRepository();
Set<URL> urls =
repository.lookupRegisteredProviderUrlsWithoutGroup(keyWithoutGroup(path,
version));
if (CollectionUtils.isEmpty(urls)) {
diff --git
a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java
b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java
index ade8754..eb97078 100644
---
a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java
+++
b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java
@@ -16,9 +16,6 @@
*/
package org.apache.dubbo.remoting.transport.netty4;
-import org.apache.dubbo.common.config.Configuration;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-
import io.netty.channel.EventLoopGroup;
import io.netty.channel.epoll.Epoll;
import io.netty.channel.epoll.EpollEventLoopGroup;
@@ -49,9 +46,8 @@ public class NettyEventLoopFactory {
}
private static boolean shouldEpoll() {
- Configuration configuration =
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration();
- if (configuration.getBoolean("netty.epoll.enable", false)) {
- String osName = configuration.getString("os.name");
+ if (Boolean.parseBoolean(System.getProperty("netty.epoll.enable",
"false"))) {
+ String osName = System.getProperty("os.name");
return osName.toLowerCase().contains("linux") &&
Epoll.isAvailable();
}
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
index d00da0f..73f5297 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
@@ -39,6 +39,7 @@ import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelAware;
import org.apache.dubbo.rpc.service.GenericException;
import org.apache.dubbo.rpc.service.GenericService;
import org.apache.dubbo.rpc.support.ProtocolUtils;
@@ -64,9 +65,16 @@ import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
* GenericInvokerFilter.
*/
@Activate(group = CommonConstants.PROVIDER, order = -20000)
-public class GenericFilter implements Filter, Filter.Listener {
+public class GenericFilter implements Filter, Filter.Listener, ScopeModelAware
{
private final Logger logger = LoggerFactory.getLogger(GenericFilter.class);
+ private ApplicationModel applicationModel;
+
+ @Override
+ public void setApplicationModel(ApplicationModel applicationModel) {
+ this.applicationModel = applicationModel;
+ }
+
@Override
public Result invoke(Invoker<?> invoker, Invocation inv) throws
RpcException {
if ((inv.getMethodName().equals($INVOKE) ||
inv.getMethodName().equals($INVOKE_ASYNC))
@@ -108,7 +116,7 @@ public class GenericFilter implements Filter,
Filter.Listener {
} else if (ProtocolUtils.isGsonGenericSerialization(generic)) {
args = getGsonGenericArgs(args,
method.getGenericParameterTypes());
} else if (ProtocolUtils.isJavaGenericSerialization(generic)) {
- Configuration configuration =
ApplicationModel.defaultModel().getApplicationEnvironment().getConfiguration();
+ Configuration configuration =
ApplicationModel.ofNullable(applicationModel).getApplicationEnvironment().getConfiguration();
if
(!configuration.getBoolean(CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE,
false)) {
String notice = "Trigger the safety barrier! " +
"Native Java Serializer is not allowed by
default." +
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
index d49e24a..deaeec9 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
@@ -33,7 +33,7 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.io.IOException;
import java.util.HashMap;
@@ -129,7 +129,7 @@ class CallbackServiceCodec {
// one channel can have multiple callback instances, no need to
re-export for different instance.
if (!channel.hasAttribute(cacheKey)) {
if (!isInstancesOverLimit(channel, url, clazz.getName(),
instid, false)) {
-
ApplicationModel.defaultModel().getApplicationServiceRepository().registerService(clazz);
+
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationServiceRepository().registerService(clazz);
Invoker<?> invoker = PROXY_FACTORY.getInvoker(inst, clazz,
exportUrl);
// should destroy resource?
Exporter<?> exporter = PROTOCOL.export(invoker);
@@ -167,7 +167,7 @@ class CallbackServiceCodec {
URL referurl = URL.valueOf("callback://" + url.getAddress() +
"/" + clazz.getName() + "?" + INTERFACE_KEY + "=" + clazz.getName());
referurl =
referurl.addParametersIfAbsent(url.getParameters()).removeParameter(METHODS_KEY);
if (!isInstancesOverLimit(channel, referurl, clazz.getName(),
instid, true)) {
-
ApplicationModel.defaultModel().getApplicationServiceRepository().registerService(clazz);
+
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationServiceRepository().registerService(clazz);
@SuppressWarnings("rawtypes")
Invoker<?> invoker = new ChannelWrappedInvoker(clazz,
channel, referurl, String.valueOf(instid));
proxy = PROXY_FACTORY.getProxy(invoker);
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
index add0437..a5003ef 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.rpc.protocol.dubbo;
-import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.serialize.Cleanable;
@@ -123,7 +122,7 @@ public class DecodeableRpcInvocation extends RpcInvocation
implements Codec, Dec
setParameterTypesDesc(desc);
try {
- if
(ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY,
true)) {
+ if
(Boolean.parseBoolean(System.getProperty(SERIALIZATION_SECURITY_CHECK_KEY,
"true"))) {
CodecSupport.checkSerialization(path, version,
serializationType);
}
Object[] args = DubboCodec.EMPTY_OBJECT_ARRAY;
@@ -132,6 +131,7 @@ public class DecodeableRpcInvocation extends RpcInvocation
implements Codec, Dec
// if (RpcUtils.isGenericCall(path, getMethodName()) ||
RpcUtils.isEcho(path, getMethodName())) {
// pts = ReflectUtils.desc2classArray(desc);
// } else {
+ // TODO: fetch from FrameworkModel
ServiceRepository repository =
ApplicationModel.defaultModel().getApplicationServiceRepository();
ServiceDescriptor serviceDescriptor =
repository.lookupService(path);
if (serviceDescriptor != null) {
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
index cb7a41a..1c6a00b 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
@@ -118,7 +118,7 @@ public class DecodeableRpcResult extends AppResponse
implements Codec, Decodeabl
public void decode() throws Exception {
if (!hasDecoded && channel != null && inputStream != null) {
try {
- if
(ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY,
true)) {
+ if
(ConfigurationUtils.getSystemConfiguration(channel.getUrl().getScopeModel()).getBoolean(SERIALIZATION_SECURITY_CHECK_KEY,
true)) {
Object serializationType_obj =
invocation.get(SERIALIZATION_ID_KEY);
if (serializationType_obj != null) {
if ((byte) serializationType_obj != serializationType)
{
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java
index 85244e9..aa3c1fb 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java
@@ -151,7 +151,7 @@ public class DubboInvoker<T> extends AbstractInvoker<T> {
}
for (ExchangeClient client : clients) {
try {
-
client.close(ConfigurationUtils.getServerShutdownTimeout());
+
client.close(ConfigurationUtils.getServerShutdownTimeout(getUrl().getScopeModel()));
} catch (Throwable t) {
logger.warn(t.getMessage(), t);
}
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
index 680b0b4..c95f5c7 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
@@ -646,7 +646,7 @@ public class DubboProtocol extends AbstractProtocol {
logger.info("Close dubbo server: " +
server.getLocalAddress());
}
- server.close(ConfigurationUtils.getServerShutdownTimeout());
+
server.close(ConfigurationUtils.getServerShutdownTimeout(server.getUrl().getScopeModel()));
} catch (Throwable t) {
logger.warn(t.getMessage(), t);
@@ -686,7 +686,7 @@ public class DubboProtocol extends AbstractProtocol {
logger.info("Close dubbo connect: " + client.getLocalAddress()
+ "-->" + client.getRemoteAddress());
}
- client.close(ConfigurationUtils.getServerShutdownTimeout());
+
client.close(ConfigurationUtils.getServerShutdownTimeout(client.getUrl().getScopeModel()));
// TODO
/*
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java
index 65b74a0..9d9e205 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java
@@ -25,9 +25,9 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.filter.ClusterFilter;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.AsyncMethodInfo;
import org.apache.dubbo.rpc.model.ConsumerModel;
+import org.apache.dubbo.rpc.model.ServiceModel;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -192,8 +192,8 @@ public class FutureFilter implements ClusterFilter,
ClusterFilter.Listener {
return asyncMethodInfo;
}
- ConsumerModel consumerModel =
ApplicationModel.defaultModel().getConsumerModel(invoker.getUrl().getServiceKey());
- if (consumerModel == null) {
+ ServiceModel serviceModel = invocation.getServiceModel();
+ if (!(serviceModel instanceof ConsumerModel)) {
return null;
}
@@ -202,7 +202,7 @@ public class FutureFilter implements ClusterFilter,
ClusterFilter.Listener {
methodName = (String) invocation.getArguments()[0];
}
- return consumerModel.getAsyncInfo(methodName);
+ return ((ConsumerModel) serviceModel).getAsyncInfo(methodName);
}
}
diff --git
a/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java
b/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java
index 3693f4a..ac2c4e7 100644
---
a/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java
+++
b/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java
@@ -22,7 +22,7 @@ import org.apache.dubbo.common.threadpool.ThreadPool;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.config.SslConfig;
import org.apache.dubbo.config.context.ConfigManager;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
import org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor;
import org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator;
import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor;
@@ -153,7 +153,7 @@ public class GrpcOptionsUtils {
}
private static SslContext buildServerSslContext(URL url) {
- ConfigManager globalConfigManager =
ApplicationModel.defaultModel().getApplicationConfigManager();
+ ConfigManager globalConfigManager =
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationConfigManager();
SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() ->
new IllegalStateException("Ssl enabled, but no ssl cert information
provided!"));
SslContextBuilder sslClientContextBuilder = null;
@@ -183,7 +183,7 @@ public class GrpcOptionsUtils {
}
private static SslContext buildClientSslContext(URL url) {
- ConfigManager globalConfigManager =
ApplicationModel.defaultModel().getApplicationConfigManager();
+ ConfigManager globalConfigManager =
ScopeModelUtil.getApplicationModel(url.getScopeModel()).getApplicationConfigManager();
SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() ->
new IllegalStateException("Ssl enabled, but no ssl cert information
provided!"));
diff --git
a/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java
b/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java
index d5d781c..39b15a0 100644
---
a/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java
+++
b/dubbo-rpc/dubbo-rpc-grpc/src/main/java/org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java
@@ -72,6 +72,7 @@ public class GrpcProtocol extends AbstractProxyProtocol {
GrpcRemotingServer grpcServer = (GrpcRemotingServer)
protocolServer.getRemotingServer();
+ // TODO: fetch from FrameworkModel
ServiceRepository serviceRepository =
ApplicationModel.defaultModel().getApplicationServiceRepository();
ProviderModel providerModel =
serviceRepository.lookupExportedService(url.getServiceKey());
if (providerModel == null) {
@@ -123,7 +124,7 @@ public class GrpcProtocol extends AbstractProxyProtocol {
channel,
GrpcOptionsUtils.buildCallOptions(url),
url,
-
ApplicationModel.defaultModel().getConsumerModel(url.getServiceKey()).getReferenceConfig()
+ url.getServiceModel().getReferenceConfig()
);
final Invoker<T> target = proxyFactory.getInvoker(stub, type, url);
GrpcInvoker<T> grpcInvoker = new GrpcInvoker<>(type, url, target,
channel);
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestProtocol.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestProtocol.java
index 8db22f5..1e658b6 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestProtocol.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestProtocol.java
@@ -23,7 +23,6 @@ import
org.apache.dubbo.remoting.http.servlet.BootstrapListener;
import org.apache.dubbo.remoting.http.servlet.ServletManager;
import org.apache.dubbo.rpc.ProtocolServer;
import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;
import org.apache.http.HeaderElement;
@@ -94,7 +93,7 @@ public class RestProtocol extends AbstractProxyProtocol {
@Override
protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws
RpcException {
String addr = getAddr(url);
- Class implClass =
ApplicationModel.defaultModel().getProviderModel(url.getServiceKey()).getServiceInstance().getClass();
+ Class implClass = url.getServiceModel().getProxyObject().getClass();
RestProtocolServer server = (RestProtocolServer)
serverMap.computeIfAbsent(addr, restServer -> {
RestProtocolServer s =
serverFactory.createServer(url.getParameter(SERVER_KEY, DEFAULT_SERVER));
s.setAddress(url.getAddress());
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractServerStream.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractServerStream.java
index b742248..eb10de5 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractServerStream.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractServerStream.java
@@ -86,6 +86,7 @@ public abstract class AbstractServerStream extends
AbstractStream implements Str
}
private static ProviderModel lookupProviderModel(URL url) {
+ // TODO: fetch from FrameworkModel
ServiceRepository repo =
ApplicationModel.defaultModel().getApplicationServiceRepository();
final ProviderModel model =
repo.lookupExportedService(url.getServiceKey());
if (model != null) {
diff --git
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java
index 2faaf61..1222612 100644
---
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java
+++
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.common.serialize.hessian2.dubbo;
-import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
@@ -34,7 +33,7 @@ public interface Hessian2FactoryInitializer {
SerializerFactory getSerializerFactory();
static Hessian2FactoryInitializer getInstance() {
- String whitelist = ConfigurationUtils.getProperty(WHITELIST);
+ String whitelist = System.getProperty(WHITELIST);
if (StringUtils.isNotEmpty(whitelist)) {
return loader.getExtension("whitelist");
}
diff --git
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java
index 9614319..d17f135 100644
---
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java
+++
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java
@@ -16,7 +16,6 @@
*/
package org.apache.dubbo.common.serialize.hessian2.dubbo;
-import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.serialize.hessian2.Hessian2SerializerFactory;
import org.apache.dubbo.common.utils.StringUtils;
@@ -30,10 +29,10 @@ public class WhitelistHessian2FactoryInitializer extends
AbstractHessian2Factory
@Override
public SerializerFactory createSerializerFactory() {
SerializerFactory serializerFactory = new Hessian2SerializerFactory();
- String whiteList = ConfigurationUtils.getProperty(WHITELIST);
+ String whiteList = System.getProperty(WHITELIST);
if ("true".equals(whiteList)) {
serializerFactory.getClassFactory().setWhitelist(true);
- String allowPattern = ConfigurationUtils.getProperty(ALLOW);
+ String allowPattern = System.getProperty(ALLOW);
if (StringUtils.isNotEmpty(allowPattern)) {
for (String pattern : allowPattern.split(";")) {
serializerFactory.getClassFactory().allow(pattern);
@@ -41,7 +40,7 @@ public class WhitelistHessian2FactoryInitializer extends
AbstractHessian2Factory
}
} else {
serializerFactory.getClassFactory().setWhitelist(false);
- String denyPattern = ConfigurationUtils.getProperty(DENY);
+ String denyPattern = System.getProperty(DENY);
if (StringUtils.isNotEmpty(denyPattern)) {
for (String pattern : denyPattern.split(";")) {
serializerFactory.getClassFactory().deny(pattern);