jboss7.1.1类加载分析

来源:互联网 发布:unity3d人才过剩 编辑:程序博客网 时间:2024/06/06 01:02

org.jboss.modules 
类ModuleClassLoader

java.lang.Object   延伸到 java.lang.ClassLoader       延伸到 java.security.SecureClassLoader           延伸到 org.jboss.modules.ConcurrentClassLoader               延伸到 org.jboss.modules.ModuleClassLoader

公共类ModuleClassLoader
扩展ConcurrentClassLoader

一个模块类加载器。该类的实例实现了模块中可用的类和资源的完整视图。与其对应Module,具有访问类和资源的导出视图的API方法。

最开始进入执行类加载,如果在配置文件standalone.conf.bat(Windows)或standalone.conf(Unix / Linux)的-Djboss.modules.system.pkgs属性有值,则进行Classloader委托机制,否则进入自定义类加载器

  private Class<?> performLoadClass(String className, boolean exportsOnly, final boolean resolve) throws ClassNotFoundException {        if (className == null) {            throw new IllegalArgumentException("name is null");        }        for (String s : Module.systemPackages) {            if (className.startsWith(s)) {                return definingLoader != null ? definingLoader.loadClass(className) : findSystemClass(className);            }        }        return performLoadClassChecked(className, exportsOnly, resolve);    }

performLoadClassChecked之后调用,findClass()

进如findclass

 

 /** {@inheritDoc} */    @Override    protected final Class<?> findClass(String className, boolean exportsOnly, final boolean resolve) throws ClassNotFoundException {        // Check if we have already loaded it..        Class<?> loadedClass = findLoadedClass(className);//是否已加载        if (loadedClass != null) {            if (resolve) {                resolveClass(loadedClass);//连接            }            return loadedClass;        }        final ModuleLogger log = Module.log;        final Module module = this.module;        log.trace("Finding class %s from %s", className, module);        final Class<?> clazz = module.loadModuleClass(className, exportsOnly, resolve);//重要,进行加载类        if (clazz != null) {            return clazz;        }        log.trace("Class %s not found from %s", className, module);        throw new ClassNotFoundException(className + " from [" + module + "]");    }

不贴代码了,累死了,所以呢对于jboss7 的rasp的类加载问题,与tomcat rasp类加载问题同出一处,却又有点小差异,做一记录!

原创粉丝点击