文章分类 - tomcat源码阅读
1
摘要:第十七篇分析了tomcat socket处理的概览,这篇对流程进行梳理,达到分析到主流程和大概的处理逻辑,比如request和response的创建等后续分析请求处理需要解决的疑惑,后面分析请求处理的时候碰到的涉及到这篇的问题将持续更新这篇 十七篇分析了socket处理的主流程如下 NIOEndPo
阅读全文
摘要:这篇开始分析tomcat内核处理请求部分(分析了tomcat 处理socket概况,后面部分具体分析处理socket的处理),在十七篇中分析了tomcat将socket处理和tomcat内核连接起来的地方,下面是代码片段: 上面的代码片段最后会调用到StandardEngineValve的invok
阅读全文
摘要:在之前分析的基础上,这篇打算总结一下tomcat里面出现多线程的地方以及tomcat的处理, 先总结一下之前的分析 tomcat组件的启动 从第三篇的分析知道,tomcat的启动是从bootstrap 类开始的,当我们启动服务或者启动startup.bat的时候,bootstrap 中main方法调
阅读全文
摘要:Tomcat关于接收socket的部分逻辑比较复杂,这篇通过涉及到相关类的abstract class的分析来掌握大概整个流程,上篇分析了connector,connector最终是通过connector标签的protocol属性来创建protocolhandler,调用相对应的init,start
阅读全文
摘要:这篇分析Connector组件,之前第八篇分析StandardService中涉及到Connector, 分析Service的时候,知道StartInternal里面会调用connectors的每个connector的start方法,一个service可以有多个connector,可以从catali
阅读全文
摘要:这篇分析另一个人容器Wrapper,这个跟之前分析的Server、Service、Host、Engine 和Context不同,前面分析的容器可以直接在Server.xml配置,Context可以配置也可不配置,但是Wrapper是在容器初始化过程中创建的。主要是在第十三章中分析WebConfig方
阅读全文
摘要:这篇单独分析configureStart –> applicationAnnotationsConfig方法 applicationAnnotationsConfig方法: 看源码发现 applicationAnnotationsConfig >WebAnnotationSet.loadApplic
阅读全文
摘要:这篇单独分析configureStart –>webconfig方法,下面是configureStart的代码 WebConfig方法: 1. 解析WebXmlParser:WebXmlParser解析填充webxml对象分析,先看WebXmlParser代码,看源码可以发现是同样是通过Digest
阅读全文
摘要:上篇我们知道deployApps方法,Context可以在这里创建,现在看下相关代码片段 所以现在看StandardContext,观察Context和StandardContext可以看到基本上都是一系列的get set方法,前面分析我们知道这些可以是Context标签的属性值,用Digester
阅读全文
摘要:承接上一篇,由于HostConfig的重要性分篇来看 这篇主要讲解check涉及到的方法,check方法是在PERIODIC_EVENT事件触发的时候才会调用,前面分析ContainerBase的时候可以知道在执行backgroudProcess的方法时候会触发这个事件,现在看check方法: 看d
阅读全文
摘要:使用过tomcat的都知道,我们的Host是会配置在Engine标签下面的在Server.xml中,所以这篇我们将要看的是另一个Container Host,下面是Host的继承关系图。 看Host源码可以看到,大部分都是get/set方法,之前分析我们知道,这个是跟Server.xml的元素属性相
阅读全文
摘要:上篇分析Service我们知道,在Service中主要涉及到Connector和Engine,我们先走Engine这条线,因为这涉及到tomcat内部工作机制,Connector是涉及到http与我们tomcat的连接,这个也是重点以后分析,这篇开始我们将进入Container系统组件,首先要看的E
阅读全文
摘要:这篇主要看Lifecycle 继承下的另一个主要组件Service,首先看下我们StandardService的对象链,可以看Catalina里面的createDigester方法和server.xml的对应关系 现在具体看下ConnectorCreateRule因为涉及到executor,前面分析
阅读全文
摘要:从tomcat文档,或者更具上篇我们分析的Lifecycle继承关系或者查看Server.xml配置文件可以知道,在Lifecycle继承链下tomcat有几大组件,Server、Service、Context、Engine、Host,当然Lifecycle继承链下还有其他组件。 从分析Catali
阅读全文
摘要:中秋归来,这篇分析tomcat关于jmx的部分,tomcat用的是DynamicMBean,不熟悉JMX的同学可以网上看下,上篇文章分析了tomcat的Catalina类,了解到Catalina会调用StandardServer,现在看下StandardServer的继承关系 这篇文章重点看Life
阅读全文
摘要:上一篇我们已经分析了Digester类,有基础分析Catalina类的代码,所以这篇主要是看下Catalina类,之前我们分析Bootstrap类的时候,知道Bootstrap的类主要是通过CatalinaClassLoader加载Catalina类调用Catalina的load(arguments
阅读全文
摘要:前一章大概看了bootstrap的代码,知道了bootstrap除了主要实例化那三个类加载器,其他都是用CatalinaClassLoaler去加载Catalina类的执行对应方法,主要是init load start stop是这几个方法,在看Catalina源码之前,要首先看下tomcat里面的
阅读全文
摘要:分析bootstrap类的方法 首先是静态代码段static{},初始化catalinaHomeFile变量和catalinaBaseFile变量,catalinaHomeFile变量默认是bootstrap.jar文件路径,catalinaBaseFile默认情况下等于catalinaHomeFi
阅读全文
摘要:问题:要找到tomcat的主类,任何java程序都是由主类的main方法启动的,java程序的编写运行主要两个步骤首先用javac命令编译源码,简单的程序简单用java 调用主类调用,复杂的程序也会使用jar命令打包class文件,主要步骤:1.javac 2.jar(不是必须) 3.java运行。
阅读全文
摘要:前言 阅读tomcat源码,可以简单的用一般的文本编辑器查看,但是为了更加高效的阅读,可以借助IDE方便的功能,比如Type Hierachy、源码导航功能等。 参考文档:http://tomcat.apache.org/tomcat-9.0-doc/building.html 导入步骤 下面是导入
阅读全文
1