`
暗恋未遂
  • 浏览: 39554 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

JBoss ClassLoader体系结构

阅读更多
JBoss class loading体系结构如图:


上图是JBoss核心ClassLoader组件,它的核心部分是org.jboss.mx.loading.UnifiedClassLoader3(UCL)。它继承标准的java.net.URLClassLoader,覆盖了标准parent delegation模型以使用共享class和资源仓库。这个共享的仓库是org.jboss.mx.loading.UnifiedLoaderRepository3。每一个UCL关联到单一的一个UnifiedLoaderRepository3, 并且一个UnifiedLoaderRepository3通常拥有多个UCL。一个UCL可能具有多个URL用来载入class和资源。部署器使用最顶层的部署单元UCL作为它的共享classloader,并且所有的部署都关联的这个ClassLoader。

当一个UCL请求载入一个类时,它首先去它关联的仓库cache查找,看是否这个类已被载入。仅当这个类在仓库里不存在时,它才由UCL载入到仓库中。通常的,所有UCL实例共享一个UnifiedLoaderRepository3。这意味着UCL是一个扁平的ClassLoader。

下面是UnfiedClassLoader3.loadClass(String, boolean)完整的执行序列:

检查UnifiedClassLoader3关联的UnifiedLoaderRepository3类cache。如果类在cache找到,则返回这个类。

否则,检查UnfiedClassLoader3是否能够载入这个类。它本质上调用了父类URLClassLoader.loadClass(String, boolean)方法来查看这个类是否存在于当前ClassLoader关联的URL里,或者在当前ClassLoader的父ClassLoader里。如果类被找到,则将它放到的仓库的Class cache里,并返回找到的类。

否则,仓库根据包名到UCl的印射查询其他的UCL是否有能力载入这个类。当一一个UCL添加到仓库中时,将建立UCL载入类的包名到当前这个UCL的印射关系。这就能够快速的确定哪一个UCL能够载入当前类。 然后UCLs根据每个UCL添加到仓库里时指的顺序请求载入指定的类。如果其中一个UCL能够找到这个类,则返回这个类,如果都不能找到,则抛出java.lang.ClassNotFoundException异常。
分享到:
评论

相关推荐

    基于JMX的JBoss体系结构研究

    ### 基于JMX的JBoss体系结构研究:深入解析与探讨 #### JBoss:J2EE应用服务器的领航者 JBoss,作为一款采用纯Java编写的开源J2EE应用服务器,自1999年问世以来,迅速成长为业界广受欢迎的选择。其发展历程见证了...

    jboss 5 原理 2 classloader

    JBoss 5的ClassLoader项目分为三个子项目: 1. `classloader`:包含了自定义的`java.lang.ClassLoader`扩展,但没有特定的类加载策略。这个子项目主要关注类加载的基础功能,即从何处加载类以及如何加载。 2. `...

    JBOSS的目录结构介绍

    JBOSS目录结构介绍 JBOSS是一款功能强大且广泛应用于企业级Java应用程序的应用服务器。了解JBOSS的目录结构对于快速上手和高效使用JBOSS至关重要。在本节中,我们将详细介绍JBOSS的目录结构,帮助初学者快速了解...

    jboss配置入门,jboss的初级配置

    在本文中,我们将对jboss的基本配置进行介绍,包括其文件夹结构、配置文件、负载均衡配置等。 jboss文件夹结构 jboss的文件夹结构主要包括以下几个部分: * $JBOSS-HOME:jboss的安装目录 * $JBOSS-HOME/server:...

    jboss 下载(httpwww.jboss.org)

    JBoss 的目录结构包含: 1. bin:启动和停止 JBoss 的脚本。 2. docs:包含示例、测试脚本和配置文件的 DTD。 3. lib:存放 JBoss 运行所需的 JAR 包。 4. client:EJB 客户端运行时需要的 JAR 包。 5. server:不同...

    Jboss项目部署文档

    Jboss 项目部署文档 Jboss 项目部署文档是指在 Jboss 服务器上部署项目的详细步骤,包括环境变量的配置、项目打包、配置文件的修改、JNDI 的配置等。以下是 Jboss 项目部署文档的详细知识点: 一、环境变量配置 ...

    在jboss上部署web应用

    解压后,你会看到JBoss的目录结构,包括以下几个关键部分: - bin目录:包含了启动和关闭服务器的脚本,如run.jar和shutdown.jar。 - client目录:包含与JBoss客户端通信所需的Java库(JARs)。 - docs目录:存放...

    JBOSS,JBoss安装部署

    【JBOSS,JBoss安装部署】 JBoss是Red Hat公司开发的一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了全面的企业级应用程序部署和管理解决方案。本篇文章将详细讲解JBoss的安装和部署过程,...

    jboss7.1 linux版本

    JBoss AS 7.1.0.Final是在Linux环境下运行的一款开源Java应用服务器,由Red Hat公司维护。这个版本发布于2012年,它引入了许多改进和新特性,旨在提供更快的启动速度、更高的性能以及更好的模块化。在这个环境中,...

    MyEclipse中配置JBoss

    【标题】:“MyEclipse中配置JBoss” 在IT行业中,MyEclipse是一款深受开发者喜爱的集成开发环境(IDE),尤其对于Java EE项目开发来说,它提供了强大的支持。而JBoss则是一个开源的应用服务器,广泛用于部署和管理...

    windows jboss 安装及部署

    JBOSS 的目录结构包括: * bin 目录:包含各种脚本文件以及相关文件。 * client 目录:存储配置信息和可能被 Java 客户端应用程序或外部 Web 容器用到的 jar 文件。 * docs 目录:保存在 JBOSS 中引用的 XML 文件和...

    JavaEE源代码 jboss-common

    JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...

    在IntelliJ idea8中部署Jboss服务器图解

    "在IntelliJ IDEA 8中部署Jboss服务器图解" IntelliJ IDEA 8是 JetBrains 公司开发的一款功能强大且灵活的集成开发环境(IDE),它支持多种programming语言,包括Java、Python、Ruby、PHP等。Jboss则是一款流行的...

    jboss-eap-7.2.6-patch

    2. **补丁结构分析** - `patch.xml`: 这个文件通常包含了整个补丁包的元数据,包括补丁的描述、版本信息以及应用补丁的指令,是补丁管理的核心文件。 - `7.2.1.GA-patch.xml` 至 `7.2.5.GA-patch.xml`: 这些文件...

    jboss7开发部署详细文档

    在下载完成后,需要解压缩压缩包,通常情况下,jboss7的安装目录结构如下所示: * bin:存放启动jboss的脚本文件 * docs:存放jboss的文档 * jboss-as:存放jboss的核心组件 * licenses:存放jboss的许可证文件 * ...

    jboss开发技术文档

    2. **JBoss的目录结构**:JBoss的目录结构包含多个子目录,如bin用于存放可执行脚本,conf包含服务器配置文件,deploy是默认的部署目录,lib是服务器的类库,logs存储运行日志,tmp用于临时文件等。 3. **启动...

    JBoss启动 JBoss启动

    1. **JBoss目录结构**: JBoss的安装目录包含多个子目录,如`bin`、`server`、`deploy`等。`bin`目录下有启动和停止服务器的脚本,`server`目录则包含了不同配置的服务器实例,`deploy`用于放置待部署的应用程序。 ...

    jboss使用详细操作步骤

    了解 JBoss 的目录结构有助于更好地管理和配置应用程序。 1. **bin**:包含用于启动/停止 JBoss 的脚本文件。 2. **client**:存放客户端连接 JBoss 所需的 Java 库 (JAR 文件)。 3. **docs**:文档目录,提供 ...

Global site tag (gtag.js) - Google Analytics