This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit c30a430ae4fe07491ab16f6aeb0238b727ad5101 Author: hengyunabc <[email protected]> AuthorDate: Thu Oct 10 19:52:02 2019 +0800 ExtensionLoader try to load resource from itself ClassLoader first --- .../dubbo/common/extension/ExtensionLoader.java | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) 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 47b19cf..bc4739d 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 @@ -660,21 +660,24 @@ public class ExtensionLoader<T> { private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type) { String fileName = dir + type; try { - Enumeration<java.net.URL> urls; + Enumeration<java.net.URL> urls = null; ClassLoader classLoader = findClassLoader(); - if (classLoader != null) { - urls = classLoader.getResources(fileName); - } else { - urls = ClassLoader.getSystemResources(fileName); + + // try to load from ExtensionLoader's ClassLoader first + ClassLoader extensionLoaderClassLoader = ExtensionLoader.class.getClassLoader(); + if (ClassLoader.getSystemClassLoader() != extensionLoaderClassLoader) { + urls = extensionLoaderClassLoader.getResources(fileName); } - if (urls != null) { - if (!urls.hasMoreElements()) { - // try to load from ExtensionLoader's ClassLoader - ClassLoader extensionLoaderClassLoader = this.getClass().getClassLoader(); - if (ClassLoader.getSystemClassLoader() != extensionLoaderClassLoader) { - urls = extensionLoaderClassLoader.getResources(fileName); - } + + if(urls == null || !urls.hasMoreElements()) { + if (classLoader != null) { + urls = classLoader.getResources(fileName); + } else { + urls = ClassLoader.getSystemResources(fileName); } + } + + if (urls != null) { while (urls.hasMoreElements()) { java.net.URL resourceURL = urls.nextElement(); loadResource(extensionClasses, classLoader, resourceURL);
