1. Tomcat 类加载机制 在Tomcat中,分别包含以下几个加载器: Common类加载器,用于加载Tomcat和各个Web应用共享的类 Share类加载器,用于加载各个Web共享的类 Server类加载器,用于加载Tomcat各个类 … 继续阅读 Tomcat 源码分析总结与收获
Category: Tomcat
Tomcat 源码剖析(八)Tomcat 是如何加载webapps中的类的
Tomcat 是如何加载webapps中的类的? 【问题】 Tomcat作为一个Java Web容器,他在启动时会加载其他用户的代码,而其他用户又可能依赖了其他的jar包,因此Tomcat是如何将所有的class文件加载到容器的呢? 【思路 … 继续阅读 Tomcat 源码剖析(八)Tomcat 是如何加载webapps中的类的
Tomcat 源码剖析(七)Response.getOutputStream() 是如何缓存数据流的?
【问题】 在Tomcat 8以后,默认都是使用的NIO,并且内部有一定的缓存,那么 Tomcat是如何缓存Request和Response的输入输出流的? 【思路】 这个感觉比较简单,NIO的输入单位是ByteBuffer,那么直接在Res … 继续阅读 Tomcat 源码剖析(七)Response.getOutputStream() 是如何缓存数据流的?
Tomcat 源码剖析(六)Tomcat如何读取web.xml并生成ServletConfig对象
【问题】 Tomcat是如何读取web.xml并生成ServletConfig对象的 【猜想】 这个没什么思路,要是按照常规的来,结合Tomcat读取server.xml的方式来看,应该同样是是通过Degister通过规则配置生成相应的属性 … 继续阅读 Tomcat 源码剖析(六)Tomcat如何读取web.xml并生成ServletConfig对象
Tomcat源码剖析(五)Tomcat如何管理Servlet生命周期
【问题】 Servlet规范中规定Servlet生命周期只调用一次init()和distory()方法,每次请求来只调用service()方法,那么Tomcat是如何管理Servlet生命周期的? 高并发请求中,如果保证只初始化一个Serv … 继续阅读 Tomcat源码剖析(五)Tomcat如何管理Servlet生命周期
Tomcat源码剖析(四)Tomcat如何找到请求Url对应的Servlet
【分析】 在Servlet中,规定的Url组成为:ip:port/context/servlet-path 因此,想要找到对应的Servlet,必须首先解析context,然后再找到对应的servlet-path 同时,servlet协议规 … 继续阅读 Tomcat源码剖析(四)Tomcat如何找到请求Url对应的Servlet
Tomcat源码剖析(三)Connector 处理请求连接分析
Connector 处理请求连接分析 Tomcat 是如何解析Http请求协议的? 在上一章中,分析了Tomcat中的connector的初始化与启动。但是由于使用的是Tomcat 9的代码,代码中默认使用的是NIO处理的IO连接,而NIO … 继续阅读 Tomcat源码剖析(三)Connector 处理请求连接分析
Tomcat源码剖析(二)连接器
Connector: 在上一章中,分析了整个Tomcat的结构以及启动流程,在整个框架中,我们分析了StandardServer,StandardService等的初始化以及启动,但是对于连接器,却是一笔带过?为什么呢?并不是因为连接器不重 … 继续阅读 Tomcat源码剖析(二)连接器
Tomcat源码剖析(一)启动
Tomcat源码剖析(一)启动 首先需要明白的是: Tomcat以多模块划分各个各个功能点,每个模块都统一实现了生命周期的接口,并且每个模块的生命周期都由它的拥有者或父类启动。 Tomcat的整体结构如下: Server负责整个项目的关闭和 … 继续阅读 Tomcat源码剖析(一)启动