Tomcat 架构分析(二) ClassLoader详解

上一节提到,Tomcat的五个子模块:Jsper模块、Servlet和Jsp模块、Catalina模块、Connector模块、Resource模块,本节是对lib包下的详细讲解,以及Tomcat是如何加载类(ClassLoader)
摘要由CSDN通过智能技术生成
Tomcat 架构分析(二)  ClassLoader详解



前言:
    上一节提到,Tomcat的五个子模块: Jsper模块 Servlet和Jsp模块 Catalina模块 Connector模块 Resource模块 ,本节是对lib包下的 详细讲解,以及Tomcat是如何加载类( ClassLoader

1.简介

    与许多服务器应用程序一样,Tomcat安装了各种类装入器(也就是实现java.lang.classloader的类),以允许容器的不同部分和在容器上运行的web应用程序访问不同的可用类和资源的存储库。 该机制用于提供Servlet规范中定义的功能。
    在Java环境中,类装入器被安排在父-子树中。 通常,当一个类装入器被要求装入一个特定的类或资源时,它首先将请求委托给父类装入器,然后只在父类装入器(s)不能找到所请求的类或资源时才查找它自己的存储库。 请注意,web应用程序类加载器的模型与下面略有不同,但主要原则是相同的。
    在启动Tomcat时,它会创建一组类装入器,这些装入器会被组织到下面的父-子关系中,其中父类装入器位于子类装入器之上:

        


2.类加载的定义

如上图所示,Tomcat在初始化时创建了以下类加载器:

1.Bootstrap  ——  这个类装入器包含Java虚拟机提供的基本运行时类,以及从系统扩展目录(javahome/jre/lib/ext)中提供的JAR文件的任何类。 注意:有些jvm可能会将它作为一个以上的类装入器来实现,或者它可能不可见(作为一个类装入器)。

2.System ——   这个类装入器通常从CLASSPATH环境变量的内容中初始化。 对于Tomcat内部类和web应用程序,所有这些类都是可见的。
然而,标准的Tomcat启动脚本($catalinahome/bin/catalina. sh或%catalinhome%bin catalina.bat)完全忽略CLASSPATH环境变量本身的内容, 而是从以下存储库构建系统类装入器:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值