diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java index 55caba9ace..239552c4bd 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/URL.java @@ -1059,6 +1059,10 @@ public final class URL implements Serializable { return getParameter(Constants.INTERFACE_KEY, path); } + public URL setServiceInterface(String service) { + return addParameter(Constants.INTERFACE_KEY, service); + } + public int hashCode() { final int prime = 31; int result = 1; diff --git a/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistry.java b/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistry.java index 1609b531ed..dc3eeb9ed7 100644 --- a/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistry.java +++ b/dubbo-registry-redis/src/main/java/com/alibaba/dubbo/registry/redis/RedisRegistry.java @@ -331,6 +331,13 @@ public class RedisRegistry extends FailbackRegistry { } } } + if (urls != null && urls.isEmpty() && url.getParameter(Constants.ADMIN_KEY, false)) { + URL empty = url.setProtocol(Constants.EMPTY_PROTOCOL); + if (Constants.ANY_VALUE.equals(empty.getServiceInterface())) { + empty = empty.setServiceInterface(service.substring(root.length())); + } + urls.add(empty); + } for (NotifyListener listener : listeners) { notify(url, listener, urls); }