jboss7.1.1类加载分析

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类加载问题同出一处,却又有点小差异,做一记录!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值