tomcat类加载体系

前言

jvm中有一个很重要的模块,就是类加载机制,而且由于其双亲加载机制的设计,保证了java核心库的安全性,更进一步,保证了共享对象这一机制,从而达到信息的高度共享。有意思的是,java的ClassLoader并不是final的,也就是我们完全可以通过继承它而改写这个类加载体系,tomcat就是这么做的。这篇博客就是来介绍tomcat为了实现其实际的需求,改写类加载体系的。

一、类加载

在JVM中并不是一次性把所有的文件都加载到内存,而是一步一步的,按照需要来加载。

比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过类加载机制加载到JVM中,并且存放一段时间,便于频繁使用。

二、JVM类加载

JVM类加载采用父类委托机制,(注意,上下级之间是委托关系,不是继承关系)如下图所示:

这里写图片描述

JVM中包括集中类加载器:

  1. BootStrapClassLoader 引导类加载器
  2. ExtClassLoader 扩展类加载器
  3. AppClassLoader 应用类加载器
  4. CustomClassLoader 用户自定义类加载器

他们的区别上面也都有说明。需要注意的是,不同的类加载器加载的类是不同的,因此如果用户加载器1加载

Tomcat是一个由一系列可配置的组件构成的Web容器,其中的一个核心组件是Catalina。可以将整个Tomcat看作是一个Catalina实例,启动Tomcat时会初始化这个实例。Catalina是Tomcat的servlet容器,因此从另一个角度来看,Tomcat本质上也是一个Servlet容器。Tomcat体系结构主要包括以下几个组件: 1. Catalina: Catalina是Tomcat的核心组件,负责处理HTTP请求和响应,以及管理Servlet的生命周期。它包括了一个Connector用于接收和处理HTTP请求,以及一个Container用于管理Servlet和其他组件。 2. Connector: Connector负责处理客户端和Tomcat之间的通信。它可以通过不同的协议(如HTTP、AJP等)接收和处理请求,并将请求交给Catalina处理。 3. Container: Container是Tomcat的容器,负责管理Servlet和其他组件的生命周期。它包括了一个Engine用于处理多个虚拟主机(Virtual Host),每个虚拟主机包含多个Host,每个Host又包含多个Context。 4. Context: Context是Web应用程序的上下文,它包含了Web应用程序的配置信息和资源。每个Web应用程序都有一个对应的Context,它负责加载和管理Web应用程序的Servlet、Filter、Listener等组件。 5. Servlet: Servlet是Java编写的服务器端组件,用于处理客户端的请求并生成响应。Tomcat支持Servlet规范,因此可以部署和运行基于Servlet的Web应用程序。 总之,Tomcat体系结构是基于Catalina的,它包括Connector、Container、Context和Servlet等组件,用于接收和处理客户端的请求,并生成相应的响应。通过配置这些组件,可以实现灵活、可扩展的Web应用程序开发和部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值