From 119de4d7fd3c3af0d3abbf817d503391f670e69f Mon Sep 17 00:00:00 2001 From: "william.liangf" Date: Tue, 17 Apr 2012 09:34:37 +0000 Subject: [PATCH] =?UTF-8?q?DUBBO-204=20=E4=BF=AE=E6=94=B9destroyAll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@1559 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../dubbo/common/extension/ExtensionLoader.java | 12 ++++++++++++ .../com/alibaba/dubbo/config/ProtocolConfig.java | 8 ++++++-- .../com/alibaba/dubbo/config/RegistryConfig.java | 13 +++++++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/ExtensionLoader.java index eea65ad54..ba698dfda 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/ExtensionLoader.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/ExtensionLoader.java @@ -241,6 +241,18 @@ public class ExtensionLoader { return false; } + @SuppressWarnings("unchecked") + public T getLoadedExtension(String name) { + if (name == null || name.length() == 0) + throw new IllegalArgumentException("Extension name == null"); + Reference reference = cachedInstances.get(name); + if (reference == null) { + cachedInstances.putIfAbsent(name, new Reference()); + reference = cachedInstances.get(name); + } + return (T) reference.get(); + } + @SuppressWarnings("unchecked") public T getExtension(String name) { if (name == null || name.length() == 0) diff --git a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java index 5ebd1f454..3f1383f21 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java @@ -406,9 +406,13 @@ public class ProtocolConfig extends AbstractConfig { public static void destroyAll() { AbstractRegistryFactory.destroyAll(); - for (String protocol : ExtensionLoader.getExtensionLoader(Protocol.class).getLoadedExtensions()) { + ExtensionLoader loader = ExtensionLoader.getExtensionLoader(Protocol.class); + for (String protocolName : loader.getLoadedExtensions()) { try { - ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(protocol).destroy(); + Protocol protocol = loader.getLoadedExtension(protocolName); + if (protocol != null) { + protocol.destroy(); + } } catch (Throwable t) { logger.warn(t.getMessage(), t); } diff --git a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java index e7e7029ca..7a06d636e 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java @@ -276,10 +276,6 @@ public class RegistryConfig extends AbstractConfig { this.subscribe = subscribe; } - public static void closeAll() { - AbstractRegistryFactory.destroyAll(); - } - public String getGroup() { return group; } @@ -313,4 +309,13 @@ public class RegistryConfig extends AbstractConfig { this.isDefault = isDefault; } + public static void destroyAll() { + AbstractRegistryFactory.destroyAll(); + } + + @Deprecated + public static void closeAll() { + destroyAll(); + } + } \ No newline at end of file -- GitLab