`
ocre
  • 浏览: 57851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tomcat中的实现的子ClassLoader的结构

    博客分类:
  • java
阅读更多

摘自:http://www.blogjava.net/freeman1984/archive/2009/11/02/300717.html

Tomcat Server在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的 
Tomcat Server的ClassLoader结构如下: 


       ---------------------------+ 
       |         Bootstrap           | 
       |             |               | 
       |          System             | 
       |             |               | 
       |          Common             | 
       |         /      \            | 
       |     Catalina  Shared        | 
       |               /    \        | 
       |          WebApp1  WebApp2   | 
       ---------------------------+ 

其中: 
- Bootstrap - 载入JVM自带的类和$JAVA_HOME/jre/lib/ext/*.jar 
- System - 载入$CLASSPATH/*.class 
- Common - 载入$CATALINA_HOME/common/...,它们对TOMCAT和所有的WEB APP都可见 
- Catalina - 载入$CATALINA_HOME/server/...,它们仅对TOMCAT可见,对所有的WEB APP都不可见 
- Shared - 载入$CATALINA_HOME/shared/...,它们仅对所有WEB APP可见,对TOMCAT不可见(也不必见) 
- WebApp? - 载入ContextBase?/WEB-INF/...,它们仅对该WEB APP可见

ClassLoader被组织成树形,一般的工作原理是: 
1) 线程需要用到某个类,于是contextClassLoader被请求来载入该类 
2) contextClassLoader请求它的父ClassLoader来完成该载入请求 
3) 如果父ClassLoader无法载入类,则contextClassLoader试图自己来载入 


注意:WebApp?ClassLoader的工作原理和上述有少许不同: 
它先试图自己载入类(在ContextBase?/WEB-INF/...中载入类),如果无法载入,再请求父ClassLoader完成

分享到:
评论

相关推荐

    Tomcat技术培训

    - **容器管理**:如Docker容器化部署,可以在云环境中快速部署和扩展Tomcat服务。 #### 四、Tomcat性能优化 - **JVM调优**:通过调整JVM参数,如-Xms、-Xmx、-XX:+UseConcMarkSweepGC等,以提升应用程序的性能。 -...

    面试必问之jvm与性能优化.docx

    如果父类加载器无法加载(例如Bootstrap ClassLoader无法加载非核心类),则子加载器才会尝试自己加载。这种方式确保了核心类库的安全性,避免了类的重复加载。 #### 二、类加载器的深入理解 **2.1 类加载器的作用...

    携程Java高级工程师岗位面试真题

    以上内容是Java高级工程师面试中常见的知识点,包括JVM加载Class的原理、类加载器的角色以及Tomcat的类加载机制。理解这些内容对于深入理解Java应用程序的运行机制以及解决相关问题至关重要。在面试中,展示对这些...

    Liberty概要文件配置说明

    描述中提到的“server.xml”是Liberty核心配置文件,类似于Tomcat中的server.xml文件,它负责定义和控制Liberty服务器运行的各种参数。该配置文件通常位于Liberty安装目录下的“config”子目录中。在server.xml中,...

    book of vaadin

    - **子窗口滚动内容**:处理子窗口中的滚动条。 - **模态窗口**:创建阻止用户与其他部分交互的窗口。 ##### 4.4 使用监听器处理事件 - **事件处理**:使用监听器来响应用户事件和其他触发条件。 ##### 4.5 引用...

    java面试题

    - **JVM** 通过 `ClassLoader` 来加载类,主要包括 `Bootstrap ClassLoader`、`Extension ClassLoader` 和 `Application ClassLoader`。 ### 24. 线程模型与线程安全 - **线程模型** 有两种:通过继承 `Thread` 类...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    Java中级面试题

    - **Bootstrap ClassLoader**(启动类加载器): 负责加载`JAVA_HOME/lib/rt.jar`中的类库。 - **Extension ClassLoader**(扩展类加载器): 负责加载`JAVA_HOME/lib/ext`目录中的jar包。 - **Application ClassLoader...

    JAVA高级工程师个人简历模版.doc

    - **功能模块**:负责营业后台模块中的批量处理子模块开发,包括接口设计、功能优化、bug修复等。 - **系统运维**:参与系统运维技术支撑工作,包括订单数据的转储、脚本编写、外围系统对接等。 2. **中国电信数据...

    百度2019年最新面试题库

    Java中有多种类加载器,包括Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader。实现自定义类加载器可以帮助解决特定问题,比如动态加载类、实现安全控制等。 #### 解释一下什么叫AOP(面向切面编程...

    java面试题(较全面)

    - **具体实现:** `List`、`Set`、`Queue`是`Collection`的子接口;`HashMap`、`TreeMap`等是`Map`的实现类。 - **元素存储:** 集合通常存储的是对象引用,而不是基本类型值。 6. **文件和目录I/O:** - **读取...

Global site tag (gtag.js) - Google Analytics