Tomcat的类加载器

深入理解 Tomcat(四)Tomcat 类加载器之为何违背双亲委派模型 这是我们研究Tomcat的第四篇文章,前三篇文章我们搭建了源码框架,了解了tomcat的大致的设计架构, 还写了一个简单的服务器。按照我们最初订的计划,今天,我们要开始研究tomcat的几个主要组件(组件太多,无法一一解析,解析几个核心),包括核心的类加载器,连接器和容器,还有生命周期,还有pipeline 和 valve。一个一个来,今天来研究类加载器。我们分为4个部分来探讨: 1. 什么是类 阅读详情

看完了Java类装载器,我们再来看看应用服务器(Tomcat)对类加载器的使用,每个应用服务器都有一套自己的类加载器体系,从而与Java的类加载器区别开以达到自己与应用程序隔离的目的.

Tomcat的类加载器体系为:Bootstrap--->System--->Common---->Catalina,Shared

Shared------>Webapp1,Webapp2 .....

下面是对每个类加载器的定义:

1.Bootstrap加载器在这里是Java里的Bootstrap和ExtClassLoader的总称,负责加载Java核心包的类,和<Java_Home>/jre/lib/ext目录下的类.通常我们开发人员并不关心.我想只要是java程序这些肯定是必要的

2.System就是系统加载器,一般是AppClassLoader,负责加载ClassPath环境变量设置目录下的值,这个我们开发人员会非常关注,但是在Tomcat里面,虽然用AppClassLoader类加载器,但我们设置的ClassPath对它没有影响(如果有影响,那就麻烦了,将会导致Tomcat运行不稳定),为什么呢,因为tomcat每次启动的时候都会在命令行窗口中都会重新设置Classpath值为:<catalina_Home>/bin/bootstrap.jar和<java_Home>/lib/tools.jar,所以这里面的类一般对应用程序不可见的.除非你设置了

3.Common类加载器负责加载TomcatHOME/common/class下的.Class文件和common/lib中的jar包,这些类可以被Tomcat内核和每个Web应用程序都可以看见,一般放公用的一些重要的类,如servlet.jar等

4.Catalina类加载器从server/classes和server/lib下加载类,Catalina加载的类只对Tomcat服务器内核可见,对Web应用程序不可见,对于运行Tomcat内核的线程,它的上下文类加载器就是Catalina类加载器

5.Shared类加载器负责从share/classes和share/lib中加载类,它加载的类只对所有Web应用程序有效,对Tomcat不可见.

6.WebappX类加载器负责加载Web应用程序的/web-INF/classes和lib目录下的类,只对当前Web应用程序有效,对其他Web应用程序无效,对于运行每个Web应用程序的线程,他们的上下文类加载器就是它们各自的WebappX类加载器

总结:从以上6点可以看出Tomcat提供了完整的类加载器体系,并且分工非常的明确,因而非常访问我们进行Web应用程序的设置和部署.

 

 

 

《Tomcat源码解析》Tomcat类加载器 《Tomcat源码解析》Tomcat类加载器 文章目录《Tomcat源码解析》Tomcat类加载器前言一、J2SE类加载器1.1 启动类加载器1.2 扩展类加载器1.3 系统类加载器1.4 代码获取各种类加载器1.5 双亲委派机制1.6 ClassLoader二、Tomcat类加载器三、Web应用类加载器四、Tomcat类加载器源码 前言 一、J2SE类加载器 JVM默认提供了3个类加载器,他们以一种父子树的方式创建,同时使用委派模式确保应用程序可通过自身的类加载器(System)加载所有可见的J 阅读详情

相关推荐

Tomcat内核之Tomcat的类加载器

跟其他主流的Java Web服务器一样,Tomcat也拥有不同的自定义类加载器,达到对各种资源库的控制。一般来说,Java Web服务器需要解决以下四个问题: ①   同一个Web服务器里,各个Web项目之间各自使用的Java类库要互相隔离。 ②   同一个Web服务器里,各个Web项目之间可以提供共享的Java类库。 ③   服务器为了不受Web项目的影响,应该使服务器的类库与应用程序的类

seaboat——a free boat on the sea.(公众号:远洋号) 5203

tomcat的类加载器

一.Jvm的类加载器 Bootstrap:用于加载JVM提供的基础运行类,即位于%JAVA_HOME%/jre/lib目录下的核心类库。 Extension: Java提供的一个标准的扩展机制用于加载除核心类库外的Jar包, 即只要复制到指定的扩展目录(可以多个)下的Jar,JVM会自动加载(不需要通过-classpath指定)。默认的扩展目录是%JAVA_HOME%/jre/lib/ext。典型的应用场景就是,Java使用该类加载器加载JVM默认提供的但是不属于核心类库的Jar,.

xu1204013031的博客 1068

深入理解Tomcat类加载器与DevLoader特性

本文还有配套的精品资源,点击获取 简介:Tomcat作为一个流行的Java Web应用容器,其类加载器在运行时负责管理Java类的加载。本简介探讨了Java类加载器的基本概念和双亲委派模型,详细介绍了Tomcat中类加载器的层级结构及其支持Web应用隔离的机制。提到了可能存在的"DevLoader"类加载器,它可能具备热部署功能以提高开发效率。文档还涵盖了通过配置文件对类加...

weixin_42581846的博客 1121

tomcat与自定义类加载器

一个tomcat中可以部署多个应用,而每个应用中都存在很多类,并且各个应用中的类是独立的,全类名是可以相同的,比如一个博客系统中可能存在com.data.User类,一个库存系统中可能也存在com.data.User类。一个tomcat,不管内部部署了多少应用,Tomcat启动之后就是一个Java进程,也就是一个JVM,所以如果Tomcat中只存在一个类加载器,比如默认的AppClassLoader,那么就只能加载一com.data.User类,这是有问题的 .

qq_23204557的博客 2031

【Linux】常见指令的使用

Linux常用指令

qq_74897518的博客 1479

《矩阵论》学习笔记(四):4.2 矩阵的QR分解

《矩阵论》学习笔记(四):4.2 矩阵的QR分解 文章目录《矩阵论》学习笔记(四):4.2 矩阵的QR分解一. Givens矩阵与Givens变换1.1. 概念与理解1.2. Givens矩阵求解方法二. Householder矩阵与Householder变换2.1. 概念与理解2.2. Householder矩阵求解方法2.3. Givens变换与Householder变换的关系三. 矩阵的QR...

shine的博客 3676

Tomcat源码解析系列二:Tomcat类加载机制以及Context的初始化

Bootstrap Loader:加载lib目录下或者System.getProperty(“sun.boot.class.path”)、或者-XBootclasspath所指定的路径或jarExtended Loader:加载lib\ext目录下或者System.getProperty(“java.ext.dirs”) 所指定的 路径或jar。例如:java -Djava.ext.dirs=/projects/testproj/classes HelloWorld。

Running666的博客 1148

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

Tomcat源码分析 (五)----- Tomcat 类加载器

在研究tomcat 类加载之前,我们复习一下或者说巩固一下java 默认的类加载器。楼主以前对类加载也是懵懵懂懂,借此机会,也好好复习一下。 楼主翻开了神书《深入理解Java虚拟机》第二版,p227, 关于类加载器的部分。请看: 什么是类加载机制? Java虚拟机把描述类的数据从Class文件加载进内存,并对数据进行校验,转换解析和初始化,最终形成可以呗虚拟机直接使用的Java...

weixin_30294709的博客 293

化学气相沉积CVD工艺中MKS下游排气高速节流阀的国产化替代方案及产品

对标MKS、VAT和CDK等国外公司的下游排气高速节流阀系列产品,本文介绍了相应的国产化替代方案和产品。基于CVD工艺,技术方案将下游流量调节阀变为了下游压力调节阀,并采用分体结构,将调压阀与PID控制器分离,调压阀具备大口径和高速功能,电子气控驱动调压阀快速动作,PID控制器接收真空计信号和控制气控驱动阀,可实现阀门全开时间小于0.1秒。

Shanghai_Eyoung的博客 5259

WPF高级 | WPF 与数据库交互:连接、查询与数据更新

WPF高级 | WPF 与数据库交互:连接、查询与数据更新,在现代应用程序开发中,数据的存储和管理至关重要。Windows Presentation Foundation(WPF)作为一款强大的图形界面开发框架,常常需要与数据库进行交互,以实现数据的持久化存储、读取和更新。本文将深入探讨 WPF 与数据库交互的各个方面,包括数据库连接的建立、数据查询的执行以及数据更新的操作,并通过丰富的代码示例和详细的概念解释,帮助读者掌握这一关键技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

tomcat类加载器设计及源码分析

除了jdk本身的Bootstrap、Extension、System三个类加载器,tomcat设计了Common、Catalina、Shared和Web应用四个类加载器。Common、Catalina、Shared类加载器都是URLClassLoader,因此遵循双亲委派模型,也就是先由父类加载器加载,再由自己加载。而Web应用类加载器重新实现了loadClass方法,打破了双亲委派模型,默认加载规则为tomcat还提供了delegate参数控制web应用类加载器是否遵循双亲委派模型,此时加载顺序为。

qq_32868023的博客 885

基于Spring Boot + Vue 3构建高并发华为数码商城交易平台:全栈架构设计与实现

内容将涵盖系统架构、数据库设计、核心模块开发(用户、商品、订单、购物车)、安全认证、性能优化以及前后端分离部署等关键环节,并提供详尽的代码示例,旨在为开发者提供一个可落地的企业级项目实战指南。<el-button text class="button" @click.stop="addToCart(product)">加入购物车</el-button>.antMatchers("/api/user/login", "/api/user/register").permitAll() // 公开接口。

2201_76125393的博客 306

Tomcat为什么要重写类加载器

Tomcat为什么要重写类加载器 出现的原因 无法实现隔离性:如果使用默认的类加载器机制,那么是无法加载两个相同类库的不同版本的,默认的累加器是不管你是什么版本的,只在乎你的全限定类名,并且只有一份。 无法实现热替换:jsp 文件其实也就是class文件,那么如果修改了,但类名还是一样,类加载器会直接取方法区中已经存在的,修改后的jsp是不会重新加载的。 打破双亲委派机制 ...

qq_29860591的博客 1418

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 140

海思图像质量之HiPQTool调试

文章目录一. HiPQTool 界面二. 图像调试三. 将调试参数写入程序中 一. HiPQTool 界面 二. 图像调试 三. 将调试参数写入程序中

lzg2011的博客 2377

tomcat 类加载器

tomcat 类加载器

weixin_43931625的博客 991

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

类加载器和Tomcat类加载器

类加载器和Tomcat类加载器 类加载器 1.启动类加载器(Bootstrap ClassLoader):负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath 参数指定路径中的,且被虚拟机认可(按文件名识别,如 rt.jar)的类。 2.扩展类加载器(Extension ClassLoader):负责加载 JAVA_HOME\lib\ext 目录中的,或通过 jav...

UchihaItachi1的博客 298

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Tomcat类加载器机制

  上一篇文章介绍了Tomcat的组件及架构设计理念,本章将来了解Tomcat的类加载器机制。   类加载器是一切Java应用运行的基础,了解类加载器机制便于我们掌握它的运行边界,有助于运行异常时的快速定位。 1、J2SE标准类加载器   JVM默认提供了三个类加载器,它们以父子树的方式创建,同时使用委派模式确保应用程序可以通过自身的类加载器(System)加载所有的可见Java类,如图。   其中BootStrap用于加载JVM提供的基础运行类,即位于%JAVA_HOME%/jre/lib目录下的核心类

qq_42786253的博客 283

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

tomcat类加载器详解

Tomcat类加载器体系采用分层设计,通过WebappClassLoader实现Web应用隔离。核心机制包括:1) 公共类由Common/SharedClassLoader加载;2) 每个应用独立WebappClassLoader加载私有类;3) 有限打破双亲委派以支持热部署。常见问题包括类冲突、内存泄漏等,可通过合理分配jar包位置、资源释放等手段解决。调试时可使用-verbose:class参数或JVisualVM等工具分析类加载器树。该体系在保证安全性的同时,实现了应用隔离、热部署等关键特性。

onlymscn的博客 808

Tomcat(20)Tomcat类加载器结构

Tomcat的类加载器结构提供了灵活的类加载机制,允许每个Web应用程序拥有自己的类加载器,从而实现类隔离。这种设计有助于避免类冲突,并支持热部署等功能。通过理解Tomcat的类加载器结构,开发者和系统管理员可以更好地管理和优化Tomcat服务器上的Web应用程序。

qq_43012298的博客 777

Tomcat 类加载器的实现

Tomcat 内部定义了多个 ClassLoader,以便应用和容器访问不同存储库中的类和资源,同时达到应用间类隔离的目的。本文首发于公众号:顿悟源码。 1. Java 类加载机制 类加载就是把编译生成的 class 文件,加载到 JVM 内存中(永久代/元空间)。 类加载器之所以能实现类隔离,是因为两个类相等的前提是它们由同一个类加载器加载,否则必定不相等。 JVM 在加载时,采用的是一种双亲委...

小创编程 330

Tomcat为什么要重写类加载器?

本文详细介绍了Tomcat中的双亲委派机制以及其对Tomcat的隔离性和热替换需求的影响。文章分析了打破双亲委派机制的原因,并深入探讨了Tomcat类加载器的特点和原理。最后,对全文进行了总结,强调了类加载器在Tomcat中的重要性。

程序员Forlan的博客 1450

Tomcat类加载器

java标准类加载器 Bootstrap:用于加载JVM提供的基础运行类,即位于%JAVA_HOME%/jre/lib目录下的核心类库。 Extension:加载除核心类库外的Jar包,即只要复制到指定的扩展目录下的Jar,默认的扩展目录是%JAVA_HOME%/jre/lib/ext。 System:用于加载环境变量CLASSPATH指定目录下的或者-classpath运行参数指定的Jar包。System类加载器通常...

weixin_38441454的博客 949

Tomcat 类加载器原理深度解析

本文深入解析了Tomcat类加载机制,从Java类加载基础原理出发,系统介绍了双亲委派模型、类加载器层级结构及Tomcat特有的类加载器设计。重点剖析了Tomcat的WebappClassLoader实现机制,包括其打破双亲委派的"子优先"策略、类隔离与资源共享的平衡方案,以及热部署实现原理。通过源码分析展示了Tomcat如何通过多级加载器实现容器与应用的类隔离,并提供了类加载问题排查方法和性能调优建议。全文既包含理论阐释,又结合实践案例,是理解Tomcat类加载机制的权威指南。

持续输出Java相关知识 1313
上一篇: Java的类装载器
下一篇: 技术要学到什么程度,才能满意
NetFishTail
博客等级 码龄19年 3粉丝 120原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值