You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/11/03 05:34:35 UTC

[dubbo] 03/12: ExtensionLoader try to load resource from itself ClassLoader first

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 <he...@gmail.com>
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);