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 如何访问不在其加载范围内的用户程序了?
答案是线程上下文类加载器.
分享到:
相关推荐
《Tomcat类加载机制——ClassLoader详解》 在Java Web开发中,Tomcat作为最常用的Servlet容器,其类加载机制对于理解和优化应用性能至关重要。本文将深入探讨Tomcat的ClassLoader是如何工作的,以及它如何影响到...
在Tomcat中,类加载机制的设计是为了支持多个Web应用程序的隔离运行。每个Web应用都有自己的类加载器,这样可以确保一个应用的类不会意外地与另一个应用的类混淆。默认的类加载器结构包括以下层次: 1. Bootstrap ...
5. "tomcat加载类的顺序.doc":详细说明了Tomcat加载类的具体步骤和顺序,这对于理解和调试类加载问题至关重要。 6. "Tomcat源码研究.pdf":提供了一个全面的源码分析概览,可能包括了Tomcat的主要组件、设计模式...
Tomcat,作为广泛使用的Java Servlet容器,它自定义了一套类加载机制,以满足Web应用程序的特殊需求。下面我们将深入探讨Java类加载器以及Tomcat中的类加载器。 在Java中,类加载器主要分为三个层次:Bootstrap ...
第五部分:Tomcat 类加载机制剖析 第六部分:Tomcat 对 Https 的⽀持及 Tomcat 性能优化策略 nginx 第⼀部分:Nginx基础回顾(Nginx是什么?能做什么事情(应⽤在什么场合)?常⽤命令是什么?) 第⼆部分:Nginx核⼼...
Tomcat 的类加载机制是基于 Java 的类加载机制。它使用了多个类加载器来加载不同的类和资源。这些类加载器包括: * Bootstrap:加载 Java 的核心类库 * System:加载系统类库 * Common:加载 Tomcat 的公共类库 * ...
#### 二、类加载机制概述 在Java中,类加载器(ClassLoader)负责将.class文件加载到JVM中。Tomcat通过自定义的类加载器实现了特定的类加载顺序,以确保能够正确处理不同来源的类文件,避免类的重复加载和类版本冲突...
【标题】"Tomcat调优.zip"所包含的是一系列关于Tomcat服务器优化的资料,主要探讨了Tomcat的整体架构、线程模型以及类加载机制等核心知识点。 首先,我们来深入理解一下Tomcat的整体架构及其设计精髓。Tomcat作为一...
当Tomcat加载类时,它遵循以下顺序: - 使用Bootstrap类加载器尝试加载。 - 使用System类加载器尝试加载。 - 使用Webapp类加载器加载`WEB-INF/classes`下的类。 - 使用Webapp类加载器加载`WEB-INF/lib`中的jar...
总结,Tomcat的工作原理涉及类加载机制、配置文件解析以及请求处理流程等复杂环节。理解这些原理对于优化Tomcat性能、解决故障和开发高效Web应用至关重要。深入学习Tomcat,可以提高开发效率并更好地管理服务器资源...
### Tomcat配置详解 #### Tomcat简介 Tomcat是一个开源的轻量级Web应用程序服务器,在中小型...此外,掌握Tomcat的类加载机制有助于开发者更好地理解Web应用在Tomcat中的运行方式,从而更有效地进行开发和维护工作。
因此,让Tomcat自动加载修改过的类和Servlet成为提高开发效率的关键需求之一。 ### 让Tomcat自动加载修改过的类和Servlet #### 知识点一:理解Tomcat的热部署机制 Tomcat默认情况下并不会自动检测到类或Servlet的...
Tomcat采用了多层类加载机制,确保不同层次的应用之间不会出现类加载冲突。以下是类加载器的基本层级结构及其加载顺序: - **Bootstrap ClassLoader**:加载Java核心类库,位于`$JAVA_HOME/jre/lib/ext/*.jar`。 - ...
本文将深入探讨JVM加载Class文件的机制,类加载器的概念及其类型,以及Tomcat服务器特有的类加载机制。 1. JVM加载Class文件的原理机制 JVM加载Class文件的过程分为三个主要阶段:装载、连接和初始化。 - **装载*...
以上内容是Java高级工程师面试中常见的知识点,包括JVM加载Class的原理、类加载器的角色以及Tomcat的类加载机制。理解这些内容对于深入理解Java应用程序的运行机制以及解决相关问题至关重要。在面试中,展示对这些...
Tomcat采用了一种层次化的类加载机制,确保每个类加载器只加载自己权限范围内的类,并遵循特定的加载顺序。这种机制保证了系统的稳定性和安全性。 1. **Bootstrap**:加载核心Java库,这些库通常位于`$JAVA_HOME/...
在Java的运行环境中,类加载器扮演着至关重要...在处理类冲突、版本控制和热部署等问题时,理解Tomcat的类加载机制至关重要。开发者在进行应用部署和配置时,必须考虑到类加载器的层次和行为,以避免潜在的问题和冲突。
例如,在大型企业级应用和容器(如Tomcat)中,类加载机制的理解和利用是优化系统性能和维护性的关键。 总的来说,Java类加载机制是一个复杂但重要的主题,涉及到类加载器、类的生命周期、双亲委派模型以及自定义...
在Tomcat服务器中,类的加载方式与JVM的标准类加载机制有所不同。Tomcat采用了更加细粒度的类加载策略,以支持更复杂的Web应用程序部署。 **1. Tomcat中的类加载器** 当Tomcat启动时,会创建几种类加载器: - **...