⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pluginclassloader.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      PluginClassLoader.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   Creates a new class loader for the pluginmanager.Author:    goetzger@gmx.net------------------------------------------------------------------------------*/package org.xmlBlaster.util.classloader;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.plugin.PluginInfo;import java.net.URL;import java.net.URLClassLoader;/** * This class loader changes the loading precedence of the JVM * to prefer locally found classes and only if not found delegate * to the JVM class loader */public class PluginClassLoader extends URLClassLoader {   private final String pluginName;   private String pluginPackage;   private static Logger log = Logger.getLogger(PluginClassLoader.class.getName());   public PluginClassLoader(Global glob, URL[] urls, PluginInfo pluginInfo) {      super(urls);      this.pluginName = pluginInfo.getClassName();      int pos = pluginName.lastIndexOf(".");      if (pos >= 0) {         this.pluginPackage = pluginName.substring(0, pos);      }      else         this.pluginPackage = "";   }   public Class loadClass(String name) throws ClassNotFoundException {      ClassLoader parent = getClass().getClassLoader();      if (name.startsWith("java.") ) {         if (log.isLoggable(Level.FINE)) log.fine("Using default JVM class loader for java class " + name);         return parent.loadClass(name);      }      if (name.startsWith("org.xmlBlaster") || name.startsWith("org.jutils") || name.startsWith("org.omg")) {         if (!name.startsWith(pluginPackage)) { // matches for empty packages "" as well            if (log.isLoggable(Level.FINE)) log.fine("Using default JVM class loader for " + name);            return parent.loadClass(name);         }      }               Class clazz = findLoadedClass(name);      if (clazz != null) {          if (log.isLoggable(Level.FINE)) log.fine("Using specific class loader from cache for " + name);          return clazz;      }      try {         clazz = findClass(name);         resolveClass(clazz);         if (log.isLoggable(Level.FINE)) log.fine("Using specific class loader for " + name);         return clazz;      }      catch (ClassNotFoundException e) {          if (log.isLoggable(Level.FINE)) log.fine("Using default JVM class loader for " + name + " as not found in specific class loader");          clazz = parent.loadClass(name);          resolveClass(clazz);          return clazz;      }   } // end of loadClass}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -