`

tomcat 类加载机制

阅读更多
1.Tomcat 类加载器架构

Tomcat 服务器类加载要解决的问题:
1.同一个 tomcat 服务器下的不同应用所使用的类库可以实现隔离.
2.同一个 toncat 服务器下的不同应用所使用的类库可以互相共享.
3.服务器需要尽可能保证自身的安全不受部署的 web 应用程序影响(服务器使用到的类库应当和应用程序使用到的类库互相隔离).

在 Tomcat 目录结构中,有 3 组目录:/common/* /server/* /shared/* /WEB-INF/* 可以存放 java 类库.

/common/* 类库可被 tomcat 和所有引用程序共同使用
/server/* 类库可被 tomcat 使用,多所有的 web应用程序不可见
/shared/* 类库可被所有的 web 应用程序共同使用,但对 tomcat 自己不可见
/webapp/web-inf/ 类库仅仅可以被此 web 应用程序使用,对 tomcat 和其他web应用程序都不可见.



common classloader 加载 common 目录
catalina classloader 加载 server 目录
shared classloader 加载 shared 目录
webapp classloader 加载 web-inf
jsperLoader 加载 jsp 文件


在 Tomcat6.x 版本中,只有指定了 tomcat/conf/catalina.properties 配置文件的 server.loader 和 share.loader 项后才会真正建立 CatalinaClassLoader 和 SharedClassLoader 的实例,否则会用到这两个类加载器的地方都会用 CommonClassLoader 的实例代替. 而默认配置文件中没有设置这两个 loader 项,所以 Tomcat6.x 顺理成章的把 /common、/server 和 .shared 三个目录合并成了一个 /lib 目录.——相当于加载 /common 目录.

现在思考这么一个问题:如果有 10个应用程序都是用 Spring 来管理的,那么我们可以把 Spring 的基础包放到 common 或者shared 目录下让应用程序共享. Spring 要对用户程序进行管理,那么自然要访问到用户程序的类,而用户程序显然放在 /web-info 目录下,那么 CommonClassLoader 或 SharedClassLoader 如何访问不在其加载范围内的用户程序了?

答案是线程上下文类加载器.







0
3
分享到:
评论

相关推荐

    tomcat 类加载机制 —— ClassLoader

    NULL 博文链接:https://yjhexy.iteye.com/blog/668334

    tomcat使用与调优,nginx

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

    JAVA-JVM-01类加载机制

    java中JVM类加载器和双亲委派机制剖析,类加载示例、加载器示例、自定义一个类加载器示例;Tomcat自定义加载器详解

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

    1. Java 类加载机制 类加载就是把编译生成的 class 文件,加载到 JVM 内存中(永久代/元空间)。 类加载器之所以能实现类隔离,是因为两个类相等的前提是它们由同一个类加载器加载,否则必定不相等。 JVM 在加载时,...

    关于tomcat的一些自己介绍

    1. TOMCAT的组件介绍及处理请求的流程 2. tomcat管理 3. 提一下tomcat安全和java安全机制 4. java的类加载机制 5. tomcat的类加载机制 6. tomcat搭建集群环境

    java8集合源码分析-java-agent:基于java5Instrumentapi实现的mock框架

    java8 集合源码分析 1 介绍 1.1 用途 单元测试mock 联调、集成测试mock 支持mock静态方法,final方法,私有...理解java类加载机制、tomcat类加载机制 学习groovy语言 学习使用javassist增强字节码 了解dubbo消费端执

    Tomcat.ClassLoader.rar_Java编程_Java_

    详细讲解java classloader知识和tomcat中的类加载机制

    Java虚拟机

    第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测...

    GameServer:一个服务器处理框架,包括 协议处理,消息处理,持久层数据处理

    generator的配置文件Tomcat-config ---tomcat的配置文件,配置了context以及数据源WEB-INF ---项目的部署目录架构思路:使用Tomcat做启动使用tomcat提供的数据源使用tomcat提供的热加载机制后期方便添加web界面功能...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    类加载机制 双亲委派 OSGI 算法 搜索 二分 排序 选择 冒泡 插入 快速 归并 堆 桶 基数 常用算法 贪婪 回溯 剪枝 动态规划 数据挖掘算法 KMP算法 GZZ算法 HASH分桶 关联规则算法 APRORIVE...

    Notes:This is a learning note | Java基础,JVM,源码,大数据,面经

    jvm类加载机制 Java的内存模型 锁优化 Think In Java Java容器 Java并发 Java Concurrency in Practice 对象的共享 对象的组合 基础构建模块 JavaGC监控与优化 垃圾回收机制 垃圾回收机制的监控 优化垃圾回收机制 ...

    DBCP( Database Connection Pool )数据库连接池

    DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP; 使用连接池的第一项工作就是导包,这里需要的两个jar包分别是: commons-dbcp-1.4....

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 170 第7章 虚拟机类加载机制 / 171 7.1 概述 / 171 7.2 类加载的时机 / 172 7.3 类加载的过程 / 176 7.3.1 加载 / 176 7.3.2 验证 / 178 7.3.3 准备 / 181 7.3.4 解析 / 182 7.3.5 初始化 / 186 7.4 类...

    java8集合源码分析-Awesome-Java:真棒-Java

    Java虚拟机相关,内存模型,类加载机制,JVM性能解析等 零散的文章 数据结构与算法 算法的度量,基础数据结构,链表,二叉树,B树,图论,深度和广度优先算法,排序,查找等 设计模式 常用设计模式的Java语言描述 ...

    java版飞机大战源码-Rockira.github.io:Rockira.github.io

    类加载机制详解 垃圾回收机制 垃圾回收器、垃圾回收算法 :jack-o-lantern:拓展知识 :open_book:Java容器 :memo:多线程 线程状态转换与通信机制 线程同步与互斥 线程池知识点 常见的JUC工具类 :memo: :skis:设计模式 ...

    java 面试题 总结

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

    BOS技术整理-05

    BOS 技术整合-05 WebService-WS WS服务独立发布 搭建一个独立的 maven(jar) 服务项目 导入CXF jar 包支持 ... 定区关联客户窗口数据列表WebService远程加载 → 本地的Action即RS客户端发送请求 WebClient

    java面试题

    53. 描述一下JVM加载class文件的原理机制? 30 54. socket编程 30 54.1. 什么是TCP/IP、UDP? 30 54.2. Socket在哪里呢? 31 54.3. Socket是什么呢? 32 54.4. socket的实现步骤 37 55. Servlet 38 55.1. Servlet工作...

    三七互娱面经

    三七互娱一面面经 ...8、双亲委派机制、好处,有没有自定义过类加载器 9、怎么打破双亲委派机制,像tomcat之类的应用 10、jvm新生代老年代 11、tcp怎么保证可靠传输(慢启动,拥塞避免,快重传,快恢复

    Java开发技术大全 电子版

    9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 9.5使用关键字instanceof判断所属类292 9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取...

Global site tag (gtag.js) - Google Analytics