This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch dev-metadata in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push: new 6a1b9ee Merge pull request #2810, code review and refactor for dubbo-configcenter. 6a1b9ee is described below commit 6a1b9ee657ad01f6786d609bf55f7fd7aecc2441 Author: Ian Luo <ian....@gmail.com> AuthorDate: Wed Nov 21 17:43:11 2018 +0800 Merge pull request #2810, code review and refactor for dubbo-configcenter. --- .../org/apache/dubbo/rpc/cluster/RouterChain.java | 2 +- .../apache/dubbo/common/config/Configuration.java | 11 +++- .../dubbo/common/extension/ExtensionLoader.java | 12 ++-- .../dubbo/config/AbstractInterfaceConfig.java | 2 +- .../apache/dubbo/config/ConfigCenterConfig.java | 15 ++--- dubbo-configcenter/dubbo-configcenter-api/pom.xml | 4 +- .../configcenter/AbstractDynamicConfiguration.java | 72 +++++++++++++++------- .../dubbo/configcenter/ConfigChangeEvent.java | 2 + .../dubbo/configcenter/ConfigChangeType.java | 13 +++- .../org/apache/dubbo/configcenter/ConfigType.java | 9 ++- .../dubbo/configcenter/ConfigurationListener.java | 9 ++- .../dubbo/configcenter/ConfigurationUtils.java | 13 ++-- .../dubbo/configcenter/ConfigurationWrapper.java | 3 +- .../dubbo/configcenter/DynamicConfiguration.java | 61 +++++++++++++++--- .../support/nop/NopDynamicConfiguration.java | 15 ++--- .../support/apollo/ApolloDynamicConfiguration.java | 7 ++- .../archaius/ArchaiusDynamicConfiguration.java | 8 ++- .../dubbo/container/log4j/Log4jContainer.java | 1 + .../registry/integration/RegistryProtocol.java | 7 +-- 19 files changed, 183 insertions(+), 83 deletions(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java index 32457e9..7b13b9e 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java @@ -51,7 +51,7 @@ public class RouterChain<T> { public static <T> RouterChain<T> buildChain(DynamicConfiguration dynamicConfiguration, URL url) { RouterChain<T> routerChain = new RouterChain<>(url); - List<RouterFactory> extensionFactories = ExtensionLoader.getExtensionLoader(RouterFactory.class).getActivateExtension(dynamicConfiguration.getUrl(), (String[]) null); + List<RouterFactory> extensionFactories = ExtensionLoader.getExtensionLoader(RouterFactory.class).getActivateExtension(url, (String[]) null); List<Router> routers = extensionFactories.stream() .map(factory -> { Router router = factory.getRouter(dynamicConfiguration, url); diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Configuration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Configuration.java index 2d76882..8380b59 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Configuration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Configuration.java @@ -17,7 +17,7 @@ package org.apache.dubbo.common.config; /** - * + * Configuration interface, to fetch the value for the specified key. */ public interface Configuration { /** @@ -58,6 +58,15 @@ public interface Configuration { */ Object getProperty(String key); + /** + * Gets a property from the configuration. The default value will return if the configuration doesn't contain + * the mapping for the specified key. + * + * @param key property to retrieve + * @param defaultValue default value + * @return the value to which this configuration maps the specified key, or default value if the configuration + * contains no mapping for this key. + */ Object getProperty(String key, Object defaultValue); /** diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java index 1e9c538..83a6c7f 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java @@ -302,10 +302,6 @@ public class ExtensionLoader<T> { return Collections.unmodifiableSet(new TreeSet<String>(cachedInstances.keySet())); } - public Set<Object> getLoadedExtensionInstances() { - return Collections.unmodifiableSet(cachedInstances.values().stream().map(Holder::get).collect(Collectors.toSet())); - } - public Object getLoadedAdaptiveExtensionInstances() { return cachedAdaptiveInstance.get(); } @@ -341,6 +337,14 @@ public class ExtensionLoader<T> { } /** + * Return all available extension instances. + */ + public Set<T> getExtensions() { + return Collections.unmodifiableSet(getSupportedExtensions().stream().map(this::getExtension) + .collect(Collectors.toSet())); + } + + /** * Return default extension, return <code>null</code> if it's not configured. */ public T getDefaultExtension() { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java index e8649f0..b1f7223 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java @@ -157,7 +157,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { // For compatibility purpose, use registry as the default config center if the registry protocol is zookeeper and there's no config center specified explicitly. RegistryConfig registry = registries.get(0); if (registry.isZookeeperProtocol()) { - Set<Object> loadedConfigurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getLoadedExtensionInstances(); + Set<DynamicConfiguration> loadedConfigurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtensions(); // we use the loading status of DynamicConfiguration to decide whether ConfigCenter has been initiated. if (CollectionUtils.isEmpty(loadedConfigurations)) { ConfigCenterConfig configCenterConfig = new ConfigCenterConfig(); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java index c957f1a..0b884cc 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java @@ -20,7 +20,6 @@ import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.config.Environment; import org.apache.dubbo.common.extension.ExtensionLoader; -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.config.support.Parameter; @@ -31,7 +30,6 @@ import java.io.StringReader; import java.util.HashMap; import java.util.Map; import java.util.Properties; -import java.util.Set; /** * @@ -102,16 +100,11 @@ public class ConfigCenterConfig extends AbstractConfig { // checkConfigCenter(); URL url = toConfigUrl(); - Set<Object> loadedConfigurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getLoadedExtensionInstances(); - if (CollectionUtils.isEmpty(loadedConfigurations)) { - DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtension(url.getProtocol()); - // TODO, maybe we need a factory to do this? - dynamicConfiguration.setUrl(url); - dynamicConfiguration.init(); - return dynamicConfiguration; - } - return (DynamicConfiguration) loadedConfigurations.iterator().next(); + DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtension(url.getProtocol()); + // TODO, maybe we need a factory to do this? + dynamicConfiguration.initWith(url); + return dynamicConfiguration; } private URL toConfigUrl() { diff --git a/dubbo-configcenter/dubbo-configcenter-api/pom.xml b/dubbo-configcenter/dubbo-configcenter-api/pom.xml index e75fb9e..68b51ff 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/pom.xml +++ b/dubbo-configcenter/dubbo-configcenter-api/pom.xml @@ -25,7 +25,7 @@ <artifactId>dubbo-configcenter-api</artifactId> <packaging>jar</packaging> <name>${project.artifactId}</name> - <description>The api definition of the service configcenter module</description> + <description>The api definition of the service config-center module</description> <properties> <skip_maven_deploy>false</skip_maven_deploy> </properties> @@ -37,4 +37,4 @@ <version>${project.parent.version}</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java index 3411032..258ce52 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/AbstractDynamicConfiguration.java @@ -23,23 +23,36 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** + * Dynamic configuration template class. The concrete implementation needs to provide implementation for three methods. * + * @see AbstractDynamicConfiguration#getTargetConfig(String, String, long) + * @see AbstractDynamicConfiguration#addListener(String, ConfigurationListener) + * @see AbstractDynamicConfiguration#createTargetListener(String, ConfigurationListener) */ -public abstract class AbstractDynamicConfiguration<TargetConfigListener> extends AbstractConfiguration implements DynamicConfiguration { - public static final String DEFAULT_GROUP = "dubbo"; +public abstract class AbstractDynamicConfiguration<TargetListener> extends AbstractConfiguration + implements DynamicConfiguration { + protected static final String DEFAULT_GROUP = "dubbo"; + protected URL url; - /** - * One key can register multiple target listeners, but one target listener only maps to one configuration listener - */ - private ConcurrentMap<String, ConcurrentMap<ConfigurationListener, TargetConfigListener>> listenerToTargetListenerMap = new ConcurrentHashMap<>(); + + // One key can register multiple target listeners, but one target listener only maps to one configuration listener + private ConcurrentMap<String, ConcurrentMap<ConfigurationListener, TargetListener>> targetListeners = + new ConcurrentHashMap<>(); public AbstractDynamicConfiguration() { } @Override + public void initWith(URL url) { + this.url = url; + } + + @Override public void addListener(String key, ConfigurationListener listener) { - ConcurrentMap<ConfigurationListener, TargetConfigListener> listeners = listenerToTargetListenerMap.computeIfAbsent(key, k -> new ConcurrentHashMap<>()); - TargetConfigListener targetListener = listeners.computeIfAbsent(listener, k -> createTargetConfigListener(key, listener)); + ConcurrentMap<ConfigurationListener, TargetListener> listeners = targetListeners.computeIfAbsent(key, + k -> new ConcurrentHashMap<>()); + TargetListener targetListener = listeners.computeIfAbsent(listener, + k -> createTargetListener(key, listener)); addTargetListener(key, targetListener); } @@ -60,33 +73,48 @@ public abstract class AbstractDynamicConfiguration<TargetConfigListener> extends @Override public String getConfig(String key, String group, ConfigurationListener listener) { - return getConfig(key, group, 0l, listener); + return getConfig(key, group, listener, 0L); } @Override - public String getConfig(String key, String group, long timeout, ConfigurationListener listener) { + public String getConfig(String key, String group, ConfigurationListener listener, long timeout) { try { if (listener != null) { this.addListener(key, listener); } - return getInternalProperty(key, group, timeout); + return getTargetConfig(key, group, timeout); } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } } - public URL getUrl() { - return url; - } - - public void setUrl(URL url) { - this.url = url; - } - - protected abstract String getInternalProperty(String key, String group, long timeout); + /** + * Fetch dynamic configuration from backend config storage. If timeout exceeds, exception should be thrown. + * + * @param key property key + * @param group group + * @param timeout timeout + * @return target config value + */ + protected abstract String getTargetConfig(String key, String group, long timeout); - protected abstract void addTargetListener(String key, TargetConfigListener listener); + /** + * Register a native listener to the backend config storage so that Dubbo has chance to get notified when the + * value changes. + * + * @param key property key listener is interested. + * @param listener native listener for the backend config storage + */ + protected abstract void addTargetListener(String key, TargetListener listener); - protected abstract TargetConfigListener createTargetConfigListener(String key, ConfigurationListener listener); + /** + * Create a native listener for the backend config storage, eventually ConfigurationListener will get notified once + * the value changes. + * + * @param key property key the native listener will listen on + * @param listener ConfigurationListener instance + * @return native listener for the backend config storage + */ + protected abstract TargetListener createTargetListener(String key, ConfigurationListener listener); } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeEvent.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeEvent.java index d99d400..403ec75 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeEvent.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeEvent.java @@ -17,7 +17,9 @@ package org.apache.dubbo.configcenter; /** + * Config change event. * + * @see ConfigChangeType */ public class ConfigChangeEvent { private String key; diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeType.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeType.java index 00f56f3..e810ddc 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeType.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigChangeType.java @@ -17,10 +17,21 @@ package org.apache.dubbo.configcenter; /** - * + * Config change event type */ public enum ConfigChangeType { + /** + * A config is created. + */ ADDED, + + /** + * A config is updated. + */ MODIFIED, + + /** + * A config is deleted. + */ DELETED } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigType.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigType.java index e5ec836..d38e39d 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigType.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigType.java @@ -17,9 +17,16 @@ package org.apache.dubbo.configcenter; /** - * + * Config type */ public enum ConfigType { + /** + * For Dubbo dynamic config other than routing rules. + */ CONFIGURATORS, + + /** + * For Dubbo routing rules + */ ROUTERS } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationListener.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationListener.java index 50b2f42..bacaa14 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationListener.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationListener.java @@ -19,11 +19,18 @@ package org.apache.dubbo.configcenter; import org.apache.dubbo.common.URL; /** - * + * Config listener, will get notified when the config it listens on changes. */ public interface ConfigurationListener { + /** + * Listener call back method. Listener gets notified by this method once there's any change happens on the config + * the listener listens on. + * + * @param event config change event + */ void process(ConfigChangeEvent event); + // FIXME: why we need this? URL getUrl(); } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java index cf57b67..ef3e6d6 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationUtils.java @@ -28,7 +28,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** - * + * Utilities for manipulating configurations from different sources */ public class ConfigurationUtils { private static final CompositeConfiguration compositeConfiguration; @@ -64,17 +64,16 @@ public class ConfigurationUtils { } /** - * If user opens DynamicConfig, the extension instance must has been created during the initialization of ConfigCenterConfig with the right extension type user specified. - * If no DynamicConfig presents, NopDynamicConfiguration will be used. - * - * @return + * If user opens DynamicConfig, the extension instance must has been created during the initialization of + * ConfigCenterConfig with the right extension type user specified. If no DynamicConfig presents, + * NopDynamicConfiguration will be used. */ public static DynamicConfiguration getDynamicConfiguration() { - Set<Object> configurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getLoadedExtensionInstances(); + Set<DynamicConfiguration> configurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getExtensions(); if (CollectionUtils.isEmpty(configurations)) { return ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getDefaultExtension(); } else { - return (DynamicConfiguration) configurations.iterator().next(); + return configurations.iterator().next(); } } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationWrapper.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationWrapper.java index 9a22ddd..f60d560 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationWrapper.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/ConfigurationWrapper.java @@ -20,7 +20,7 @@ import org.apache.dubbo.common.config.AbstractConfiguration; import org.apache.dubbo.common.config.Configuration; /** - * + * A wrapper to fetch a config for the specific key with the different prefix in the specified order. */ public class ConfigurationWrapper extends AbstractConfiguration { private String application; @@ -36,6 +36,7 @@ public class ConfigurationWrapper extends AbstractConfiguration { this.delegate = configuration; } + // FIXME: I think the order is wrong, service.method.key go first, then service.key, and then application.key @Override protected Object getInternalProperty(String key) { Object value = delegate.getProperty(application + "." + key); diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/DynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/DynamicConfiguration.java index 7adcc47..83faee6 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/DynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/DynamicConfiguration.java @@ -21,27 +21,72 @@ import org.apache.dubbo.common.config.Configuration; import org.apache.dubbo.common.extension.SPI; /** - * + * Dynamic configuration */ @SPI("nop") public interface DynamicConfiguration extends Configuration { - void init(); - - URL getUrl(); - - void setUrl(URL url); + /** + * Init dynamic configuration from URL + * + * @param url the url in which info for initializing dynamic configuration is contained. + */ + void initWith(URL url); + /** + * Register a configuration listener for a specified key + * + * @param key the key to represent a configuration + * @param listener configuration listener + */ void addListener(String key, ConfigurationListener listener); + /** + * Get the configuration mapped to the given key + * + * @param key property key + * @return target configuration mapped to the given key + */ String getConfig(String key); + /** + * Get the configuration mapped to the given key and the given group + * + * @param key property key + * @param group group + * @return target configuration mapped to the given key and the given group + */ String getConfig(String key, String group); + /** + * Get the configuration mapped to the given key, and notify the passed-in listener + * + * @param key property key + * @param listener configuration listener + * @return + */ String getConfig(String key, ConfigurationListener listener); - String getConfig(String key, String group, long timeout, ConfigurationListener listener); - + /** + * Get the configuration mapped to the given key and the given group, and notify the passed-in listener + * + * @param key property key + * @param group group + * @param listener configuration listener + * @return target configuration mapped to the given key and the given group + */ String getConfig(String key, String group, ConfigurationListener listener); + /** + * Get the configuration mapped to the given key and the given group, and notify the passed-in listener. If the + * configuration fails to fetch after timeout exceeds, IllegalStateException will be thrown. + * + * @param key property key + * @param group group + * @param listener configuration listener + * @param timeout timeout value for fetching the target config + * @return target configuration mapped to the given key and the given group, IllegalStateException will be thrown + * if timeout exceeds. + */ + String getConfig(String key, String group, ConfigurationListener listener, long timeout); } diff --git a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/support/nop/NopDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/support/nop/NopDynamicConfiguration.java index f506935..1dc0794 100644 --- a/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/support/nop/NopDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-api/src/main/java/org/apache/dubbo/configcenter/support/nop/NopDynamicConfiguration.java @@ -21,28 +21,23 @@ import org.apache.dubbo.configcenter.ConfigurationListener; import org.apache.dubbo.configcenter.DynamicConfiguration; /** - * The default extension of {@link DynamicConfiguration}. - * If user does not specify a config centre, or specifies one that is not a valid extension, it will default to this one. + * The default extension of {@link DynamicConfiguration}. If user does not specify a config centre, or specifies one + * that is not a valid extension, it will default to this one. */ public class NopDynamicConfiguration extends AbstractDynamicConfiguration { @Override - public void init() { - - } - - @Override - protected String getInternalProperty(String key, String group, long timeout) { + protected String getTargetConfig(String key, String group, long timeout) { return null; } @Override protected void addTargetListener(String key, Object o) { - + // no-op } @Override - protected Object createTargetConfigListener(String key, ConfigurationListener listener) { + protected Object createTargetListener(String key, ConfigurationListener listener) { return null; } diff --git a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java index f3f392d..efec2fb 100644 --- a/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-apollo/src/main/java/org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java @@ -52,7 +52,8 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con } @Override - public void init() { + public void initWith(URL url) { + super.initWith(url); /** * Instead of using Dubbo's configuration, I would suggest use the original configuration method Apollo provides. */ @@ -94,7 +95,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con * @return */ @Override - protected String getInternalProperty(String key, String group, long timeout) { + protected String getTargetConfig(String key, String group, long timeout) { if (StringUtils.isNotEmpty(group) && !url.getParameter(Constants.CONFIG_GROUP_KEY, DEFAULT_GROUP).equals(group)) { Config config = ConfigService.getConfig(group); if (config != null) { @@ -126,7 +127,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con } @Override - protected ConfigChangeListener createTargetConfigListener(String key, ConfigurationListener listener) { + protected ConfigChangeListener createTargetListener(String key, ConfigurationListener listener) { return new ApolloListener(listener); } diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/archaius/ArchaiusDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/archaius/ArchaiusDynamicConfiguration.java index 014958d..9ca06ec 100644 --- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/archaius/ArchaiusDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/archaius/ArchaiusDynamicConfiguration.java @@ -42,7 +42,9 @@ public class ArchaiusDynamicConfiguration extends AbstractDynamicConfiguration<R } @Override - public void init() { + public void initWith(URL url) { + super.initWith(url); + // String address = env.getCompositeConf().getString(ADDRESS_KEY); // String app = env.getCompositeConf().getString(APP_KEY); @@ -80,7 +82,7 @@ public class ArchaiusDynamicConfiguration extends AbstractDynamicConfiguration<R * @return */ @Override - protected String getInternalProperty(String key, String group, long timeout) { + protected String getTargetConfig(String key, String group, long timeout) { if (StringUtils.isNotEmpty(group)) { key = group + "." + key; } @@ -112,7 +114,7 @@ public class ArchaiusDynamicConfiguration extends AbstractDynamicConfiguration<R } @Override - protected Runnable createTargetConfigListener(String key, ConfigurationListener listener) { + protected Runnable createTargetListener(String key, ConfigurationListener listener) { return new ArchaiusListener(key, listener); } diff --git a/dubbo-container/dubbo-container-log4j/src/main/java/org/apache/dubbo/container/log4j/Log4jContainer.java b/dubbo-container/dubbo-container-log4j/src/main/java/org/apache/dubbo/container/log4j/Log4jContainer.java index 1d24236..78304bb 100644 --- a/dubbo-container/dubbo-container-log4j/src/main/java/org/apache/dubbo/container/log4j/Log4jContainer.java +++ b/dubbo-container/dubbo-container-log4j/src/main/java/org/apache/dubbo/container/log4j/Log4jContainer.java @@ -18,6 +18,7 @@ package org.apache.dubbo.container.log4j; import org.apache.dubbo.configcenter.ConfigurationUtils; import org.apache.dubbo.container.Container; + import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.LogManager; 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 9ad920c..ca6dc2c 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 @@ -87,12 +87,7 @@ public class RegistryProtocol implements Protocol { public RegistryProtocol() { INSTANCE = this; - Set<Object> configurations = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getLoadedExtensionInstances(); - if (CollectionUtils.isEmpty(configurations)) { - dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfiguration.class).getDefaultExtension(); - } else { - dynamicConfiguration = (DynamicConfiguration) configurations.iterator().next(); - } + dynamicConfiguration = ConfigurationUtils.getDynamicConfiguration(); } public static RegistryProtocol getRegistryProtocol() {