`
wangxinpier
  • 浏览: 115272 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

tomcat7类加载器的分析

阅读更多
tomcat7类加载器的分析

在Bootstrap类中,进行完路径设置后
initClassLoaders();
开始初始化类载加器

我们可以看到在tomcat的启动脚本中
"java" 
-Djava.util.logging.config.file="D:\apache-tomcat-7.0.0\conf\logging.properties"
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  
-Djava.endorsed.dirs="D:\apache-tomcat-7.0.0\endorsed"
-classpath "D:\apache-tomcat-7.0.0\bin\bootstrap.jar;D:\apache-tomcat-7.0.0\bin\tomcat-juli.jar"
-Dcatalina.base="D:\apache-tomcat-7.0.0"
-Dcatalina.home="D:\apache-tomcat-7.0.0"
-Djava.io.tmpdir="D:\apache-tomcat-7.0.0\temp"
org.apache.catalina.startup.Bootstrap  start
有关classpath的设置,只有两个jar文件,那么,在lib中的jar又是如何被加载入tomcat中的呢?

首先这两个jar文件的类加载器是appclassloader.这点可以确定

在分析之前需要了解tomcat的一个重要的配置文件apache-tomcat-7.0.0\conf\catalina.properties

initClassLoaders()首先从这个配置文件中找common.loader为key的值
${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
首先处理掉其中的引用部分,对逗号分割的每一个值进行处理,这里只有第一个被认识正确的值才是有用的

之后,使用这个路径,通过类加载器工厂产生一个类加载器
ClassLoader classLoader = ClassLoaderFactory.createClassLoader(locations, types, parent);

这里自定义的类加载器是以URLClassLoader为父类的
第一个commonclassloader就已经建立成功了,由于 没有设置父类加载器,则commonclassloader的父类加载器是appclassloader

插一句,这里的自定义类加载器也被注册到MBeanServer中

之后,tomcat对server,shared目录建立了自己的classloader,他们的父类加载器就是commonclassloader

在tomcat7中也许你看不到server,shared目录了,但在早期的版本中还是会有这样的目录 存在

以上纯属个人分析的结果,如果有错误,欢迎指证.大家一起进步
分享到:
评论

相关推荐

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

    这里将JVM、OSGI、Tomcat以及OSGI和Web服务器整合平台的类加载器做了详细的说明和分析,能让你对类加载器的做一个较为系统的了解。

    tomcat 学习与分析总结资料

    强烈推荐,涉及tomcat启动脚本catlina,原理,server结构分析,类加载器 tomcat权威指南等资料

    Tomcat服务器响应过慢解决方案

    主要分析CPU和内存的使用情况(top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器。):    第三行显示的是Cpu的...

    彻底解决tiny_mce_wiris公式插件加载慢的问题

    tiny_mce_wiris原因分析: 1. tiny_mec是富文本编辑器,但原生不支持公式插件 2. wiris是公式插件能支持各种富文本编辑器,但他是半开源的,要使用他的插件 ,必须依赖于wiris云端服务器,意思是如果项目没有网络则...

    Java虚拟机

    9.2.1 Tomcat:正统的类加载器架构 9.2.2 OSGi:灵活的类加载器架构 9.2.3 字节码生成技术与动态代理的实现 9.2.4 Retrotranslator:跨越JDK版本 9.3 实战:自己动手实现远程执行功能 9.3.1 目标 9.3.2 思路 ...

    深入理解_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 类...

    DataGear数据可视化分析平台

    系统自带了一个可用于为内置数据库执行SQL语句的简单工具类org.datagear.web.util.DerbySqlClient,可以在IDE中直接运行。注意:运行前需要先停止DataGear程序。 DataGear数据可视化分析平台 更新日志: v2.9.0 ...

    JSP动态网页制作基础培训教程源代码.rar

    读者应该确保计算机上安装有SQL Server 2000服务器,启动SQL Server服务后,打开查询分析器,然后执行本章目录下的db.sql文件自动生成并初始化数据库。 2.将本章的代码(文件夹news)拷贝到Tomcat服务器安装目录的...

    java开源包7

    Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    Java数据编程指南

    数据定义 基本数据操作 数据完整性 表达式 连接 合并 子...Tomcat安装和配置 JRun 3.0安装和配置 安装检索 附录E 在WebLogic 6.0上配置并部署EJB 设置配置属性 生成EJB容器类 加载...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 ...

    ActionScript开发技术大全

    13.4网络图片加载器示例 295 13.5小结 298 第14章正则表达式与字符串匹配 299 14.1正则表达式概述 299 14.2正则表达式语法 300 14.2.1创建对象 300 14.2.2字符、元字符与元序列 301 14.2.3字符集 306 14.2.4组 307 ...

    java开源包8

    Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    SSH的jar包.rar

    1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,...

    Java开发技术大全 电子版

    14.4.7事件监听器接口和适配器类456 14.4.8作为参数的事件类456 14.4.9处理多个事件的例子463 14.5Swing组件的特性467 14.5.1Swing组件的优势467 14.5.2Swing组件的体系结构468 14.5.3使用Swing组件编写GUI的...

    JAVA著名免费框架若依前后端分离项目详细部署文档

    第二部分:部署Windows+tomcat 第三部分:调用第三方api的跨域问题处理。 以及常见的部署后页面显示404 的问题处理。 (ruoyi平台简介: 若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 前端...

    J2EE应用开发详解

    17 2.1 构建开发环境 17 2.1.1 安装JDK 17 2.1.2 安装Tomcat 21 2.1.3 安装Eclipse 23 2.2 配置开发环境 23 2.3 小结 26 第3章 Java的反射机制 27 3.1 Java反射API 27 3.2 加载类的实例 29 3.2.1 加载class对象的两...

Global site tag (gtag.js) - Google Analytics