`
windflower_07
  • 浏览: 41390 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转载]Tomcat类加载机制

    博客分类:
  • java
阅读更多
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可见

每个运行中的线程都有一个成员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

以上转于http://andyao.iteye.com/blog/34409
分享到:
评论

相关推荐

    tomcat 类加载机制 —— ClassLoader

    《Tomcat类加载机制——ClassLoader详解》 在Java Web开发中,Tomcat作为最常用的Servlet容器,其类加载机制对于理解和优化应用性能至关重要。本文将深入探讨Tomcat的ClassLoader是如何工作的,以及它如何影响到...

    tomcat类加载器

    在Tomcat中,类加载机制的设计是为了支持多个Web应用程序的隔离运行。每个Web应用都有自己的类加载器,这样可以确保一个应用的类不会意外地与另一个应用的类混淆。默认的类加载器结构包括以下层次: 1. Bootstrap ...

    java类加载器-tomcat中的类加载器

    Tomcat,作为广泛使用的Java Servlet容器,它自定义了一套类加载机制,以满足Web应用程序的特殊需求。下面我们将深入探讨Java类加载器以及Tomcat中的类加载器。 在Java中,类加载器主要分为三个层次:Bootstrap ...

    Tomcat启动时类加载顺序

    #### 二、类加载机制概述 在Java中,类加载器(ClassLoader)负责将.class文件加载到JVM中。Tomcat通过自定义的类加载器实现了特定的类加载顺序,以确保能够正确处理不同来源的类文件,避免类的重复加载和类版本冲突...

    Tomcat7 启动类加载日志

    Tomcat7.0.62 启动类加载日志

    Java 类在 Tomcat 中是如何加载的(过程分析)

    当Tomcat加载类时,它遵循以下顺序: - 使用Bootstrap类加载器尝试加载。 - 使用System类加载器尝试加载。 - 使用Webapp类加载器加载`WEB-INF/classes`下的类。 - 使用Webapp类加载器加载`WEB-INF/lib`中的jar...

    让tomcat自动加载修改过的类和servlet

    因此,让Tomcat自动加载修改过的类和Servlet成为提高开发效率的关键需求之一。 ### 让Tomcat自动加载修改过的类和Servlet #### 知识点一:理解Tomcat的热部署机制 Tomcat默认情况下并不会自动检测到类或Servlet的...

    类加载器与Tomcat

    在Java的运行环境中,类加载器扮演着至关重要...在处理类冲突、版本控制和热部署等问题时,理解Tomcat的类加载机制至关重要。开发者在进行应用部署和配置时,必须考虑到类加载器的层次和行为,以避免潜在的问题和冲突。

    译 Java类加载机制(二)

    例如,在大型企业级应用和容器(如Tomcat)中,类加载机制的理解和利用是优化系统性能和维护性的关键。 总的来说,Java类加载机制是一个复杂但重要的主题,涉及到类加载器、类的生命周期、双亲委派模型以及自定义...

    如何让tomcat自动加载

    介绍了让tomcat自动加载的 代码及文件

    myeclipse下tomcat动态加载

    在MyEclipse中配置Tomcat进行动态加载,能够让开发者在不重启服务器的情况下实现应用的热更新,提高开发效率。下面将详细解释这一过程以及相关的技术知识点。 首先,理解"动态加载"的概念。动态加载是指在程序运行...

    JVM、Tomcat、OSGI等类加载器整理文档

    - Tomcat作为流行的Java Web服务器,有自己的类加载机制。它包括Web应用程序类加载器,用于加载特定Web应用的类,以及全局类加载器,用于共享所有应用的类。这种设计允许Web应用独立更新而不影响其他应用。 5. 类...

    Eclipse Tomcat Server 加载项目

    ### Eclipse Tomcat Server 加载项目的详细步骤与配置 在开发Java Web应用时,Eclipse集成开发环境(IDE)因其强大的功能、丰富的插件支持以及友好的用户界面而被广泛使用。其中,Eclipse内置的Tomcat服务器是进行...

    Tomcat安全验证机制

    ### Tomcat安全验证机制 #### 一、理解Tomcat安全验证机制 Apache Tomcat是一款开源的Servlet容器,它能够提供一个执行环境供Java Web应用程序运行。为了确保Web应用的安全性,Tomcat内置了一套安全验证机制,允许...

    Tomcat 类加载器的实现方法及实例代码

    Tomcat 类加载器的实现主要围绕着Java的类加载机制进行,旨在确保应用之间的类隔离,并提供灵活的资源访问策略。下面我们将深入探讨这些知识点。 首先,Java的类加载机制是基于“双亲委托模型”的。当一个类加载器...

    Tomcat加载顺序

    Apache Tomcat作为一款广泛使用的开源Servlet容器,其类加载机制是理解和维护基于Tomcat的应用程序的重要部分。Tomcat的类加载器遵循特定的加载顺序,确保了不同应用间的隔离性和资源的正确加载。下面将详细解析...

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    tomcat 源码分析系列文档

    5. "tomcat加载类的顺序.doc":详细说明了Tomcat加载类的具体步骤和顺序,这对于理解和调试类加载问题至关重要。 6. "Tomcat源码研究.pdf":提供了一个全面的源码分析概览,可能包括了Tomcat的主要组件、设计模式...

    Tomcat热加载Jrebel

    2. **Tomcat热加载原理**:传统的Java应用服务器在运行时,类加载到内存后,除非服务器重启,否则无法更改。Jrebel通过动态替换内存中的类文件来实现热加载,它监测源代码的变化,并将这些变化实时地推送到运行时...

    tomcat使用与调优,nginx

    第五部分:Tomcat 类加载机制剖析 第六部分:Tomcat 对 Https 的⽀持及 Tomcat 性能优化策略 nginx 第⼀部分:Nginx基础回顾(Nginx是什么?能做什么事情(应⽤在什么场合)?常⽤命令是什么?) 第⼆部分:Nginx核⼼...

Global site tag (gtag.js) - Google Analytics