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

Tomcat类加载机制学习笔记

阅读更多
  1.   Bootstrap   
  2.        |             
  3.      System    
  4.        |   
  5.      Common   
  6.     /      \   
  7. Catalina  Shared   
  8.           /    \   
  9.        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可见

 

每个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类,系统默认的contextClassLoader是systemClassLoader,所以一般而言java程序在执行时可以使用JVM自带的类、$JAVA_HOME/jre/lib/ext/中的类和$CLASSPATH/中的类,可以使用Thread.currentThread().setContextClassLoader(...);更改当前线程的contextClassLoader,来改变其载入类的行为

ClassLoader被组织成树形,一般的工作原理是:
1) 线程需要用到某个类,于是contextClassLoader被请求来载入该类
2) contextClassLoader请求它的父ClassLoader来完成该载入请求
3) 如果父ClassLoader无法载入类,则contextClassLoader试图自己来载入
注意:WebApp?ClassLoader的工作原理和上述有少许不同:
它先试图自己载入类(在ContextBase?/WEB-INF/...中载入类),如果无法载入,再请求父ClassLoader完成

由此可得:
- 对于WEB APP线程,它的contextClassLoader是WebApp?ClassLoader
- 对于Tomcat Server线程,它的contextClassLoader是CatalinaClassLoader

分享到:
评论

相关推荐

    Tomcat学习笔记

    《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java Web应用程序。本笔记将详细阐述Tomcat的安装、配置、虚拟主机设置、JDBC数据库连接池...

    How-Tomcat-Works-中文版笔记

    《How Tomcat Works》中文版笔记详细介绍了Apache Tomcat的内部架构和运行机制,Tomcat是一个广泛使用的Java开源Web服务器和Servlet容器,它为处理基于Java的Web应用提供平台。本书不仅深入分析了Tomcat的核心组件和...

    JVM学习笔记(一)

    ### JVM学习笔记(一) #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    同时,笔记是非常重要的,它能帮你整理思路,记录学习过程中的疑问和收获。 总之,学习Tomcat源码不仅能够提升你对Web服务器底层工作的理解,还能够提高你在Java Web开发中的问题排查能力,让你成为一名更出色的...

    OpenRASP学习笔记 .pdf

    OpenRASP,全称是Baidu Open RASP (Runtime Application Self-Protection),是一种基于Java的运行时应用程序自我...学习和掌握OpenRASP,不仅可以提升系统安全性,也有助于深入理解Java应用的运行机制和安全防御策略。

    学习笔记 MHT2

    7. **Tomcat启动过程**:《Tomcat启动过程分析.mht》揭示了Apache Tomcat服务器启动的内部机制,包括配置解析、类加载、Servlet初始化等,对于理解Web应用的运行环境很有帮助。 8. **URL编码**:《对比 javascript ...

    传智播客崔希凡JavaWeb-day28-基础加强2-全部资料

    Tomcat作为一个流行的Java Web应用服务器,其类加载机制有自己的特点。理解Tomcat的类加载顺序对于解决类冲突、自定义扩展等问题至关重要。 "Servlet3.0.txt"文件可能涵盖了Servlet 3.0的新特性和改进,如注解配置...

    Servlet&JSP;学习笔记源代码

    这份"Servlet&JSP学习笔记源代码"是由林信良编著,提供了丰富的实例代码,旨在帮助学习者深入理解这两种技术。 Servlet是Java编程语言的一个接口,允许Java代码与HTTP服务器进行交互。它扩展了服务器的功能,使得...

    Tomcat_学习

    在压缩包中的"Tomcat学习"可能包含了相关的教程、笔记、示例代码或者练习项目,这些都是辅助学习的有效资源。通过实践,你可以更好地理解和运用Tomcat,比如创建自己的Web应用,部署到Tomcat上,并进行性能测试和...

    java基础知识学习笔记

    这份"java基础知识学习笔记"涵盖了Java编程的核心概念和技术,是初学者深入理解Java的宝贵资源。 1. **Java语法基础** Java语法基于C++,但更简化和安全。它包括变量声明、数据类型(如整型、浮点型、字符型和布尔...

    struts2入门教程和学习笔记

    这个入门教程和学习笔记是针对初学者设计的,帮助他们快速理解和掌握Struts2的核心概念和实践操作。 Struts2的学习首先需要理解MVC模式。MVC模式将应用逻辑分为三个部分:模型负责业务逻辑,视图负责展示数据,而...

    JSP Servlet 学习笔记源码

    本学习笔记源码提供了全面的学习资源,涵盖了这两个技术的基础到高级应用,旨在帮助开发者深入理解并熟练掌握JSP和Servlet。 1. **JSP基础**: JSP是一种服务器端的脚本语言,它将HTML、CSS、JavaScript与Java代码...

    servlet学习笔记

    ### servlet学习笔记详解 #### Tomcat介绍 **Tomcat服务器**是基于Sun公司的JSWDK(Java Servlet and Web Development Kit)发展而来的杰出Servlet/JSP容器。作为Apache-Jakarta项目的一部分,Tomcat不仅能够执行...

    tomcat源码分析

    `Catalina.bat` 是Tomcat在Windows环境下启动的批处理文件,主要负责设置环境变量、执行Java虚拟机(JVM)并加载Tomcat的核心类。解析这个脚本有助于理解Tomcat的启动过程,包括如何设置系统路径、JVM参数以及初始...

    javaWeb学习笔记基础知识

    3. **更新后装载**:当Servlet类文件发生变化后重新加载。 #### 九、Servlet与线程安全 由于一个Servlet类只有一个实例对象,因此在多线程环境下可能存在线程安全问题。解决方法通常包括使用同步机制或者设计无...

    动力节点老杜servlet学习笔记.zip

    动力节点老杜的Servlet学习笔记涵盖了这一关键领域的深入理解,旨在帮助开发者掌握Servlet的基本概念、工作原理以及实际应用。下面将详细阐述Servlet的相关知识点。 一、Servlet概述 Servlet是一个Java类,它遵循...

    Servlet&JSP学习笔记

    ### Servlet&JSP 学习笔记精要 #### 一、Servlet 基础 ##### 1.1 Web 容器 - **概念**: Web 容器是支持 Servlet 和 JSP 运行的基础环境,主要功能是加载和管理 Servlet 实例,处理客户端请求并返回响应。常见的 ...

Global site tag (gtag.js) - Google Analytics