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);