This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch cloud-native in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 2245cf70bc89c229a387fd9aa59339bdb947f8d6 Author: ken.lj <ken.lj...@gmail.com> AuthorDate: Fri Aug 9 10:36:28 2019 +0800 Introduce ProtocolServer to distinguish from RemotingServer --- .../org/apache/dubbo/bootstrap/DubboBootstrap.java | 1 + .../DefaultGovernanceRuleRepositoryImpl.java | 52 ++---------- .../governance/GovernanceRuleRepository.java | 94 ++++++++++++++++++++++ .../dubbo/rpc/cluster/router/AbstractRouter.java | 13 ++- .../cluster/router/condition/config/AppRouter.java | 5 +- .../router/condition/config/AppRouterFactory.java | 3 +- .../router/condition/config/ListenableRouter.java | 8 +- .../router/condition/config/ServiceRouter.java | 4 +- .../condition/config/ServiceRouterFactory.java | 3 +- .../dubbo/rpc/cluster/router/tag/TagRouter.java | 10 +-- .../rpc/cluster/router/tag/TagRouterFactory.java | 3 +- ...rpc.cluster.governance.GovernanceRuleRepository | 1 + .../apache/dubbo/common/config/Configuration.java | 49 +++++++++++ .../configcenter/AbstractDynamicConfiguration.java | 5 -- .../config/configcenter/DynamicConfiguration.java | 26 ------ .../file/FileSystemDynamicConfiguration.java | 5 -- .../configcenter/nop/NopDynamicConfiguration.java | 6 -- .../wrapper/CompositeDynamicConfiguration.java | 5 -- .../file/FileSystemDynamicConfigurationTest.java | 2 +- .../support/apollo/ApolloDynamicConfiguration.java | 2 +- .../consul/ConsulDynamicConfiguration.java | 15 ++-- .../support/etcd/EtcdDynamicConfiguration.java | 12 +-- .../support/nacos/NacosDynamicConfiguration.java | 5 -- .../zookeeper/ZookeeperDynamicConfiguration.java | 10 --- .../dubbo/qos/protocol/QosProtocolWrapper.java | 7 ++ .../integration/AbstractConfiguratorListener.java | 8 +- .../registry/integration/RegistryDirectory.java | 3 +- .../registry/integration/RegistryProtocol.java | 5 +- .../java/org/apache/dubbo/rpc/ProtocolServer.java | 5 +- .../dubbo/rpc/protocol/AbstractProxyProtocol.java | 2 +- .../rpc/protocol/dubbo/DubboProtocolServer.java | 2 +- .../rpc/protocol/rest/BaseRestProtocolServer.java | 12 +++ ...ttpServer.java => DubboHttpProtocolServer.java} | 4 +- .../dubbo/rpc/protocol/rest/RestProtocol.java | 1 + .../dubbo/rpc/protocol/rest/RestServerFactory.java | 2 +- .../dubbo/rpc/protocol/thrift/ThriftProtocol.java | 2 +- 36 files changed, 224 insertions(+), 168 deletions(-) diff --git a/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java b/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java index fbc523a..005f11d 100644 --- a/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java +++ b/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java @@ -59,6 +59,7 @@ import org.apache.dubbo.rpc.ProtocolServer; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java similarity index 53% copy from dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java copy to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java index 7940101..64ddb02 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java @@ -14,67 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.common.config.configcenter.nop; +package org.apache.dubbo.rpc.cluster.governance; -import org.apache.dubbo.common.URL; import org.apache.dubbo.common.config.configcenter.ConfigurationListener; import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; -import java.util.SortedSet; +public class DefaultGovernanceRuleRepositoryImpl implements GovernanceRuleRepository { -import static java.util.Collections.emptySortedSet; - -/** - * 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. - */ -@Deprecated -public class NopDynamicConfiguration implements DynamicConfiguration { - - public NopDynamicConfiguration(URL url) { - // no-op - } - - @Override - public Object getInternalProperty(String key) { - return null; - } + private DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration(); @Override public void addListener(String key, String group, ConfigurationListener listener) { - // no-op + dynamicConfiguration.addListener(key, group, listener); } @Override public void removeListener(String key, String group, ConfigurationListener listener) { - // no-op - } - - @Override - public String getConfig(String key, String group, long timeout) throws IllegalStateException { - // no-op - return null; + dynamicConfiguration.removeListener(key, group, listener); } @Override public String getRule(String key, String group, long timeout) throws IllegalStateException { - // no-op - return null; - } - - /** - * @since 2.7.4 - */ - @Override - public boolean publishConfig(String key, String group, String content) { - return true; - } - - /** - * @since 2.7.4 - */ - @Override - public SortedSet<String> getConfigKeys(String group) { - return emptySortedSet(); + return dynamicConfiguration.getConfig(key, group, timeout); } } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java new file mode 100644 index 0000000..4391cba --- /dev/null +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.dubbo.rpc.cluster.governance; + +import org.apache.dubbo.common.config.configcenter.ConfigurationListener; +import org.apache.dubbo.common.extension.SPI; + +/** + * + */ +@SPI("default") +public interface GovernanceRuleRepository { + + String DEFAULT_GROUP = "dubbo"; + + /** + * {@link #addListener(String, String, ConfigurationListener)} + * + * @param key the key to represent a configuration + * @param listener configuration listener + */ + default void addListener(String key, ConfigurationListener listener) { + addListener(key, DEFAULT_GROUP, listener); + } + + + /** + * {@link #removeListener(String, String, ConfigurationListener)} + * + * @param key the key to represent a configuration + * @param listener configuration listener + */ + default void removeListener(String key, ConfigurationListener listener) { + removeListener(key, DEFAULT_GROUP, listener); + } + + /** + * Register a configuration listener for a specified key + * The listener only works for service governance purpose, so the target group would always be the value user + * specifies at startup or 'dubbo' by default. This method will only register listener, which means it will not + * trigger a notification that contains the current value. + * + * @param key the key to represent a configuration + * @param group the group where the key belongs to + * @param listener configuration listener + */ + void addListener(String key, String group, ConfigurationListener listener); + + /** + * Stops one listener from listening to value changes in the specified key. + * + * @param key the key to represent a configuration + * @param group the group where the key belongs to + * @param listener configuration listener + */ + void removeListener(String key, String group, ConfigurationListener listener); + + /** + * Get the governance rule mapped to the given key and the given group + * + * @param key the key to represent a configuration + * @param group the group where the key belongs to + * @return target configuration mapped to the given key and the given group + */ + default String getRule(String key, String group) { + return getRule(key, group, -1L); + } + + /** + * Get the governance rule mapped to the given key and the given group. If the + * rule fails to return after timeout exceeds, IllegalStateException will be thrown. + * + * @param key the key to represent a configuration + * @param group the group where the key belongs to + * @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 getRule(String key, String group, long timeout) throws IllegalStateException; +} diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java index b848cb1..e5809b0 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java @@ -17,18 +17,19 @@ package org.apache.dubbo.rpc.cluster.router; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; +import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.rpc.cluster.Router; +import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; public abstract class AbstractRouter implements Router { protected int priority = DEFAULT_PRIORITY; protected boolean force = false; protected URL url; - protected DynamicConfiguration configuration; + protected GovernanceRuleRepository ruleRepository; - public AbstractRouter(DynamicConfiguration configuration, URL url) { - this.configuration = configuration; + public AbstractRouter(URL url) { + this.ruleRepository = ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension(); this.url = url; } @@ -44,10 +45,6 @@ public abstract class AbstractRouter implements Router { this.url = url; } - public void setConfiguration(DynamicConfiguration configuration) { - this.configuration = configuration; - } - @Override public boolean isRuntime() { return true; diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java index 852da6b..59a63c7 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java @@ -17,7 +17,6 @@ package org.apache.dubbo.rpc.cluster.router.condition.config; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; import org.apache.dubbo.common.constants.CommonConstants; /** @@ -30,8 +29,8 @@ public class AppRouter extends ListenableRouter { */ private static final int APP_ROUTER_DEFAULT_PRIORITY = 150; - public AppRouter(DynamicConfiguration configuration, URL url) { - super(configuration, url, url.getParameter(CommonConstants.APPLICATION_KEY)); + public AppRouter(URL url) { + super(url, url.getParameter(CommonConstants.APPLICATION_KEY)); this.priority = APP_ROUTER_DEFAULT_PRIORITY; } } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java index 067a523..c0464d8 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java @@ -17,7 +17,6 @@ package org.apache.dubbo.rpc.cluster.router.condition.config; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.cluster.Router; import org.apache.dubbo.rpc.cluster.RouterFactory; @@ -45,6 +44,6 @@ public class AppRouterFactory implements RouterFactory { } private Router createRouter(URL url) { - return new AppRouter(DynamicConfiguration.getDynamicConfiguration(), url); + return new AppRouter(url); } } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java index 6d3276a..41044ec 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java @@ -49,8 +49,8 @@ public abstract class ListenableRouter extends AbstractRouter implements Configu private ConditionRouterRule routerRule; private List<ConditionRouter> conditionRouters = Collections.emptyList(); - public ListenableRouter(DynamicConfiguration configuration, URL url, String ruleKey) { - super(configuration, url); + public ListenableRouter(URL url, String ruleKey) { + super(url); this.force = false; this.init(ruleKey); } @@ -118,8 +118,8 @@ public abstract class ListenableRouter extends AbstractRouter implements Configu return; } String routerKey = ruleKey + RULE_SUFFIX; - configuration.addListener(routerKey, this); - String rule = configuration.getConfig(routerKey, DynamicConfiguration.DEFAULT_GROUP); + ruleRepository.addListener(routerKey, this); + String rule = ruleRepository.getRule(routerKey, DynamicConfiguration.DEFAULT_GROUP); if (StringUtils.isNotEmpty(rule)) { this.process(new ConfigChangeEvent(routerKey, rule)); } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java index 2a50052..93ebf8b 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java @@ -29,8 +29,8 @@ public class ServiceRouter extends ListenableRouter { */ private static final int SERVICE_ROUTER_DEFAULT_PRIORITY = 140; - public ServiceRouter(DynamicConfiguration configuration, URL url) { - super(configuration, url, DynamicConfiguration.getRuleKey(url)); + public ServiceRouter(URL url) { + super(url, DynamicConfiguration.getRuleKey(url)); this.priority = SERVICE_ROUTER_DEFAULT_PRIORITY; } } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java index 12911ac..af971d7 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java @@ -17,7 +17,6 @@ package org.apache.dubbo.rpc.cluster.router.condition.config; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.cluster.CacheableRouterFactory; import org.apache.dubbo.rpc.cluster.Router; @@ -32,7 +31,7 @@ public class ServiceRouterFactory extends CacheableRouterFactory { @Override protected Router createRouter(URL url) { - return new ServiceRouter(DynamicConfiguration.getDynamicConfiguration(), url); + return new ServiceRouter(url); } } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java index 00ce099..05b1a11 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java @@ -55,8 +55,8 @@ public class TagRouter extends AbstractRouter implements ConfigurationListener { private TagRouterRule tagRouterRule; private String application; - public TagRouter(DynamicConfiguration configuration, URL url) { - super(configuration, url); + public TagRouter(URL url) { + super(url); this.priority = TAG_ROUTER_DEFAULT_PRIORITY; } @@ -244,12 +244,12 @@ public class TagRouter extends AbstractRouter implements ConfigurationListener { synchronized (this) { if (!providerApplication.equals(application)) { if (!StringUtils.isEmpty(application)) { - configuration.removeListener(application + RULE_SUFFIX, this); + ruleRepository.removeListener(application + RULE_SUFFIX, this); } String key = providerApplication + RULE_SUFFIX; - configuration.addListener(key, this); + ruleRepository.addListener(key, this); application = providerApplication; - String rawRule = configuration.getConfig(key, DynamicConfiguration.DEFAULT_GROUP); + String rawRule = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP); if (StringUtils.isNotEmpty(rawRule)) { this.process(new ConfigChangeEvent(key, rawRule)); } diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java index 0df085d..3c9a60e 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java @@ -17,7 +17,6 @@ package org.apache.dubbo.rpc.cluster.router.tag; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.cluster.CacheableRouterFactory; import org.apache.dubbo.rpc.cluster.Router; @@ -32,6 +31,6 @@ public class TagRouterFactory extends CacheableRouterFactory { @Override protected Router createRouter(URL url) { - return new TagRouter(DynamicConfiguration.getDynamicConfiguration(), url); + return new TagRouter(url); } } diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository new file mode 100644 index 0000000..067a72e --- /dev/null +++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository @@ -0,0 +1 @@ +default=org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl \ No newline at end of file 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 94ff25f..f687c85 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 @@ -16,6 +16,8 @@ */ package org.apache.dubbo.common.config; +import java.util.NoSuchElementException; + /** * Configuration interface, to fetch the value for the specified key. */ @@ -44,6 +46,49 @@ public interface Configuration { return convert(String.class, key, defaultValue); } + default int getInt(String key) { + Integer i = this.getInteger(key, (Integer) null); + if (i != null) { + return i; + } else { + throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object"); + } + } + + default int getInt(String key, int defaultValue) { + Integer i = this.getInteger(key, (Integer) null); + return i == null ? defaultValue : i; + } + + default Integer getInteger(String key, Integer defaultValue) { + try { + return convert(Integer.class, key, defaultValue); + } catch (NumberFormatException e) { + throw new IllegalStateException('\'' + key + "' doesn't map to a Integer object", e); + } + } + + default boolean getBoolean(String key) { + Boolean b = this.getBoolean(key, null); + if (b != null) { + return b; + } else { + throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object"); + } + } + + default boolean getBoolean(String key, boolean defaultValue) { + return this.getBoolean(key, toBooleanObject(defaultValue)); + } + + default Boolean getBoolean(String key, Boolean defaultValue) { + try { + return convert(Boolean.class, key, defaultValue); + } catch (Exception e) { + throw new IllegalStateException("Try to get " + '\'' + key + "' failed, maybe because this key doesn't map to a Boolean object", e); + } + } + /** * Gets a property from the configuration. This is the most basic get * method for retrieving values of properties. In a typical implementation @@ -127,4 +172,8 @@ public interface Configuration { return cls.cast(obj); } + + static Boolean toBooleanObject(boolean bool) { + return bool ? Boolean.TRUE : Boolean.FALSE; + } } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java index 604be99..3b7d3b3 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java @@ -75,11 +75,6 @@ public abstract class AbstractDynamicConfiguration implements DynamicConfigurati } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - - @Override public Object getInternalProperty(String key) { return null; } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java index 852ec62..777f50b 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java @@ -35,7 +35,6 @@ import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoad * <br/> * From the use scenario internally inside framework, there're mainly three kinds of methods: * <ol> - * <li>{@link #getRule(String, String, long)}, get governance rules.</li> * <li>{@link #getProperties(String, String, long)}, get configuration file from Config Center at start up.</li> * <li>{@link #addListener(String, String, ConfigurationListener)}/ {@link #removeListener(String, String, ConfigurationListener)} * , add or remove listeners for governance rules or config items that need to watch.</li> @@ -128,31 +127,6 @@ public interface DynamicConfiguration extends Configuration, AutoCloseable { } /** - * Get the governance rule mapped to the given key and the given group - * - * @param key the key to represent a configuration - * @param group the group where the key belongs to - * @return target configuration mapped to the given key and the given group - * @since 2.7.3 - */ - default String getRule(String key, String group) { - return getRule(key, group, -1L); - } - - /** - * Get the governance rule mapped to the given key and the given group. If the - * rule fails to return after timeout exceeds, IllegalStateException will be thrown. - * - * @param key the key to represent a configuration - * @param group the group where the key belongs to - * @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. - * @since 2.7.3 - */ - String getRule(String key, String group, long timeout) throws IllegalStateException; - - /** * Publish Config mapped to the given key under the {@link #DEFAULT_GROUP default group} * * @param key the key to represent a configuration diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java index 5b37c34..715fd87 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java @@ -348,11 +348,6 @@ public class FileSystemDynamicConfiguration implements DynamicConfiguration { }); } - @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - protected String getConfig(File configFile, long timeout) { return canRead(configFile) ? execute(() -> readFileToString(configFile, getEncoding()), timeout) : null; } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java index 7940101..e61af12 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java @@ -56,12 +56,6 @@ public class NopDynamicConfiguration implements DynamicConfiguration { return null; } - @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - // no-op - return null; - } - /** * @since 2.7.4 */ diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java index e86d656..16484e7 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java @@ -55,11 +55,6 @@ public class CompositeDynamicConfiguration implements DynamicConfiguration { } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return (String) iterateConfigOperation(configuration -> configuration.getRule(key, group, timeout)); - } - - @Override public String getProperties(String key, String group, long timeout) throws IllegalStateException { return (String) iterateConfigOperation(configuration -> configuration.getProperties(key, group, timeout)); } diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java index 5502bdf..17ead90 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java @@ -83,7 +83,7 @@ public class FileSystemDynamicConfigurationTest { assertTrue(configuration.publishConfig(KEY, CONTENT)); assertTrue(configuration.publishConfig(KEY, CONTENT)); assertTrue(configuration.publishConfig(KEY, CONTENT)); - assertEquals(CONTENT, configuration.getRule(KEY, DEFAULT_GROUP)); + assertEquals(CONTENT, configuration.getConfig(KEY, DEFAULT_GROUP)); assertTrue(configuration.getConfigs(null).size() > 0); } 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 cd20dc2..603dd73 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 @@ -147,7 +147,7 @@ public class ApolloDynamicConfiguration implements DynamicConfiguration { } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { + public String getProperties(String key, String group, long timeout) throws IllegalStateException { if (StringUtils.isEmpty(group)) { return dubboConfigFile.getContent(); } diff --git a/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java index 9a698a3..e6d5c74 100644 --- a/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-consul/src/main/java/org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java @@ -98,14 +98,6 @@ public class ConsulDynamicConfiguration implements DynamicConfiguration { } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - if (StringUtils.isEmpty(group)) { - group = DEFAULT_GROUP; - } - return getConfig(key, group, timeout); - } - - @Override public Object getInternalProperty(String key) { logger.info("get config from: " + key); Response<GetValue> response = getValue(key); @@ -127,8 +119,13 @@ public class ConsulDynamicConfiguration implements DynamicConfiguration { return null; } + private String buildPath(String group) { + String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group; + return rootPath + PATH_SEPARATOR + actualGroup; + } + private String convertKey(String group, String key) { - return rootPath + PATH_SEPARATOR + group + PATH_SEPARATOR + key; + return buildPath(group) + PATH_SEPARATOR + key; } private int buildWatchTimeout(URL url) { diff --git a/dubbo-configcenter/dubbo-configcenter-etcd/src/main/java/org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-etcd/src/main/java/org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java index c5b48b7..356161a 100644 --- a/dubbo-configcenter/dubbo-configcenter-etcd/src/main/java/org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-etcd/src/main/java/org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java @@ -22,6 +22,7 @@ import org.apache.dubbo.common.config.configcenter.ConfigChangeEvent; import org.apache.dubbo.common.config.configcenter.ConfigChangeType; import org.apache.dubbo.common.config.configcenter.ConfigurationListener; import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; +import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.remoting.etcd.StateListener; import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient; @@ -98,11 +99,6 @@ public class EtcdDynamicConfiguration implements DynamicConfiguration { return (String) getInternalProperty(convertKey(group, key)); } - @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - // @Override // public String getConfigs(String key, String group, long timeout) throws IllegalStateException { // if (StringUtils.isEmpty(group)) { @@ -116,9 +112,13 @@ public class EtcdDynamicConfiguration implements DynamicConfiguration { return etcdClient.getKVValue(key); } + private String buildPath(String group) { + String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group; + return rootPath + PATH_SEPARATOR + actualGroup; + } private String convertKey(String group, String key) { - return rootPath + PATH_SEPARATOR + group + PATH_SEPARATOR + key; + return buildPath(group) + PATH_SEPARATOR + key; } private void recover() { diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java index bc3f900..5b40527 100644 --- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java @@ -199,11 +199,6 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - - @Override public Object getInternalProperty(String key) { try { return configService.getConfig(key, DEFAULT_GROUP, DEFAULT_TIMEOUT); diff --git a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java index a346ecc..b36c023 100644 --- a/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-zookeeper/src/main/java/org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java @@ -111,16 +111,6 @@ public class ZookeeperDynamicConfiguration implements DynamicConfiguration { } @Override - public String getRule(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - - @Override - public String getProperties(String key, String group, long timeout) throws IllegalStateException { - return getConfig(key, group, timeout); - } - - @Override public boolean publishConfig(String key, String group, String content) { String path = getPathKey(key, group); zkClient.create(path, content, true); diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index fd824ba..6c5b72f 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -24,8 +24,10 @@ import org.apache.dubbo.qos.server.Server; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Protocol; +import org.apache.dubbo.rpc.ProtocolServer; import org.apache.dubbo.rpc.RpcException; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP; @@ -78,6 +80,11 @@ public class QosProtocolWrapper implements Protocol { stopServer(); } + @Override + public List<ProtocolServer> getServers() { + return protocol.getServers(); + } + private void startQosServer(URL url) { try { if (!hasStarted.compareAndSet(false, true)) { diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java index 308ca52..cf774ab 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java @@ -20,11 +20,13 @@ import org.apache.dubbo.common.config.configcenter.ConfigChangeEvent; import org.apache.dubbo.common.config.configcenter.ConfigChangeType; import org.apache.dubbo.common.config.configcenter.ConfigurationListener; import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; +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.utils.StringUtils; import org.apache.dubbo.rpc.cluster.Configurator; import org.apache.dubbo.rpc.cluster.configurator.parser.ConfigParser; +import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; import java.util.Collections; import java.util.List; @@ -39,9 +41,9 @@ public abstract class AbstractConfiguratorListener implements ConfigurationListe protected final void initWith(String key) { - DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration(); - dynamicConfiguration.addListener(key, this); - String rawConfig = dynamicConfiguration.getRule(key, DynamicConfiguration.DEFAULT_GROUP); + GovernanceRuleRepository ruleRepository = ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension(); + ruleRepository.addListener(key, this); + String rawConfig = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP); if (!StringUtils.isEmpty(rawConfig)) { genConfiguratorsFromRawRule(rawConfig); } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java index 0166d72..9592d76 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java @@ -42,6 +42,7 @@ import org.apache.dubbo.rpc.cluster.RouterChain; import org.apache.dubbo.rpc.cluster.RouterFactory; import org.apache.dubbo.rpc.cluster.directory.AbstractDirectory; import org.apache.dubbo.rpc.cluster.directory.StaticDirectory; +import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; import org.apache.dubbo.rpc.cluster.support.ClusterUtils; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.protocol.InvokerWrapper; @@ -192,7 +193,7 @@ public class RegistryDirectory<T> extends AbstractDirectory<T> implements Notify if (getConsumerUrl() != null && registry != null && registry.isAvailable()) { registry.unsubscribe(getConsumerUrl(), this); } - DynamicConfiguration.getDynamicConfiguration() + ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension() .removeListener(ApplicationModel.getApplication(), CONSUMER_CONFIGURATION_LISTENER); } catch (Throwable t) { logger.warn("unexpected error when unsubscribe service " + serviceKey + "from registry" + registry.getUrl(), t); 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 bae63ec..089383c 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 @@ -39,6 +39,7 @@ import org.apache.dubbo.rpc.ProxyFactory; import org.apache.dubbo.rpc.RpcException; import org.apache.dubbo.rpc.cluster.Cluster; import org.apache.dubbo.rpc.cluster.Configurator; +import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.invoker.ProviderInvokerWrapper; import org.apache.dubbo.rpc.protocol.InvokerWrapper; @@ -443,7 +444,7 @@ public class RegistryProtocol implements Protocol { } bounds.clear(); - DynamicConfiguration.getDynamicConfiguration() + ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension() .removeListener(ApplicationModel.getApplication() + CONFIGURATORS_SUFFIX, providerConfigurationListener); } @@ -680,7 +681,7 @@ public class RegistryProtocol implements Protocol { try { NotifyListener listener = RegistryProtocol.INSTANCE.overrideListeners.remove(subscribeUrl); registry.unsubscribe(subscribeUrl, listener); - DynamicConfiguration.getDynamicConfiguration() + ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension() .removeListener(subscribeUrl.getServiceKey() + CONFIGURATORS_SUFFIX, serviceConfigurationListeners.get(subscribeUrl.getServiceKey())); } catch (Throwable t) { diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ProtocolServer.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ProtocolServer.java index 3da2b95..02b8d49 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ProtocolServer.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ProtocolServer.java @@ -29,13 +29,12 @@ public interface ProtocolServer { return null; } - default void setRemotingServers() { - + default void setRemotingServers(RemotingServer server) { } String getAddress(); - void setAddress(); + void setAddress(String address); default URL getUrl() { return null; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java index 4b5c016..7ee976e 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java @@ -172,7 +172,7 @@ public abstract class AbstractProxyProtocol extends AbstractProtocol { } @Override - public void setAddress() { + public void setAddress(String address) { this.address = address; } diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java index d0933bc..29abfa0 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java @@ -41,7 +41,7 @@ public class DubboProtocolServer implements ProtocolServer { } @Override - public void setAddress() { + public void setAddress(String address) { this.address = address; } diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java index f16967d..3621848 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java @@ -26,6 +26,8 @@ import static org.apache.dubbo.rpc.protocol.rest.Constants.EXTENSION_KEY; public abstract class BaseRestProtocolServer implements RestProtocolServer { + private String address; + @Override public void start(URL url) { getDeployment().getMediaTypeMappings().put("json", "application/json"); @@ -54,6 +56,16 @@ public abstract class BaseRestProtocolServer implements RestProtocolServer { getDeployment().getRegistry().removeRegistrations(resourceDef); } + @Override + public String getAddress() { + return address; + } + + @Override + public void setAddress(String address) { + this.address = address; + } + protected void loadProviders(String value) { for (String clazz : COMMA_SPLIT_PATTERN.split(value)) { if (!StringUtils.isEmpty(clazz)) { diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpServer.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java similarity index 97% rename from dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpServer.java rename to dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java index e07d0a7..1ab039a 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpServer.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java @@ -36,7 +36,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration; -public class DubboHttpServer extends BaseRestProtocolServer { +public class DubboHttpProtocolServer extends BaseRestProtocolServer { private final HttpServletDispatcher dispatcher = new HttpServletDispatcher(); private final ResteasyDeployment deployment = new ResteasyDeployment(); @@ -44,7 +44,7 @@ public class DubboHttpServer extends BaseRestProtocolServer { private HttpServer httpServer; // private boolean isExternalServer; - public DubboHttpServer(HttpBinder httpBinder) { + public DubboHttpProtocolServer(HttpBinder httpBinder) { this.httpBinder = httpBinder; } 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 fe30443..62b1af6 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 @@ -97,6 +97,7 @@ public class RestProtocol extends AbstractProxyProtocol { Class implClass = ApplicationModel.getProviderModel(url.getPathKey()).getServiceInstance().getClass(); RestProtocolServer server = (RestProtocolServer) serverMap.computeIfAbsent(addr, restServer -> { RestProtocolServer s = serverFactory.createServer(url.getParameter(SERVER_KEY, DEFAULT_SERVER)); + s.setAddress(url.getAddress()); s.start(url); return s; }); diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java index 6de7ba1..6fcf7f6 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java @@ -34,7 +34,7 @@ public class RestServerFactory { public RestProtocolServer createServer(String name) { // TODO move names to Constants if ("servlet".equalsIgnoreCase(name) || "jetty".equalsIgnoreCase(name) || "tomcat".equalsIgnoreCase(name)) { - return new DubboHttpServer(httpBinder); + return new DubboHttpProtocolServer(httpBinder); } else if ("netty".equalsIgnoreCase(name)) { return new NettyRestProtocolServer(); } else { diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java index b5c492e..76bca80 100644 --- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java +++ b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java @@ -246,7 +246,7 @@ public class ThriftProtocol extends AbstractProtocol { } @Override - public void setAddress() { + public void setAddress(String address) { this.address = address; }