tomcat源码阅读(一) 入口

tomcat源码 apache-tomcat-7.0.78-src.zip 本资源为tomcat apache源码 立即下载

程序启动入口:     org.apache.catalina.startup.Bootstrap的main方法,其最终会调用到org.apache.catalina.startup.Catalina的load()和start()方法。

Bootstrap中的关键代码:

    public static void main(String args[]) {

        if (daemon == null) {
            daemon = new Bootstrap();
            try {
                daemon.init();
            } catch (Throwable t) {
                t.printStackTrace();
                return;
            }
        }

        try {
            String command = "start";
            if (args.length > 0) {
                command = args[args.length - 1];
            }

            if (command.equals("startd")) {
                args[args.length - 1] = "start";
                daemon.load(args);
                daemon.start();
            } else if (command.equals("stopd")) {
                args[args.length - 1] = "stop";
                daemon.stop();
            } else if (command.equals("start")) {
                daemon.setAwait(true);
                daemon.load(args);
                daemon.start();
            } else if (command.equals("stop")) {
                daemon.stopServer(args);
            } else {
                log.warn("Bootstrap: command \"" + command + "\" does not exist.");
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }

    }
Catalina中load()方法的关键代码:

// Create and execute our Digester
        Digester digester = createStartDigester();



       try {
            inputSource.setByteStream(inputStream);
            digester.push(this);
            digester.parse(inputSource);
            inputStream.close();
        } catch (Exception e) {
            log.warn("Catalina.start using "
                               + getConfigFile() + ": " , e);
            return;
        }

一个是创建createStartDigester(),另外一个是对digester的解析。只要把这几个调用搞懂了,tomcat的结构基本上就出来了。


tomcat处理一个http请求的详细过程 tomcat中server配置文件的结构,以及处理一个http请求的全过程 立即下载

相关推荐

J-LINK下载程序出现No Cortex-M Device found in JTAG chain…问题,最全7种解决方法

J-Link下载程序出现No Corect 等的问题的7种方法 后来编辑JLinkSettings.ini文件,找到"Device"项,将其更改Device="Cortex-M0+"

cjmsea的博客 5613

tomcat容器架构及请求和相应过程

基本容器结构如下: 请求和响应架构: 核心类介绍: 1、 tomcat的启动入口: Bootstrap这个类是tomcat启动的入口类,看看main函数: public static void main(String args[]) { synchronized (daemonLock) { if (daemon == null) { ...

jcw的博客 387

iTunes登录协议全解析:从抓包到签名验证(含HTTPDebugger避坑指南)

本文深入解析了iTunes登录协议的核心流程,包括sign-sap-setup-cert和sign-sap-setup-buffer等关键请求,并提供了使用HTTPDebugger等工具进行抓包分析时绕过反调试检测的实战技巧与避坑指南。文章详细拆解了PLIST编解码、请求签名验证机制及密码加密逻辑,为网络安全研究和协议逆向提供了完整的技术路径。

weixin_29224309的博客 331

如何找到Tomcat启动时的入口文件

之前研究Tomcat时一直在想一个问题,Tomcat启动时,执行的第一个类是哪个类,只要找到这个类也就找到了入口,找到了入口看源代码时也就容易些了。今天分享一个比较简单的定位入口文件的方法: 1.启动Tomcat 2.打开【Java VisualVM】工具(目录:jdk目录/bin/jvisualvm.exe) 3.选择Tomcat进程,然后找到main线程,查看main线程的快照。 从

杨礼凯的专栏 6296

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

Burp Suite手工验证CORS漏洞的四步闭环法

CORS(跨域资源共享)是Web应用实现跨域通信的基础机制,其安全本质在于服务端对Origin头的校验逻辑与响应头组合的语义一致性。当服务端错误地返回Access-Control-Allow-Origin: *并配合Access-Control-Allow-Credentials: true,或采用弱校验(如字符串包含匹配)时,将导致敏感数据泄露与凭据劫持风险。该漏洞难以被自动化扫描器发现,因其依赖请求上下文、认证状态及动态策略判断。Burp Suite作为核心工具,需通过构造跨域请求、捕获预检响应、交叉验

weixin_30596343的博客 512

springboot中tomcat的启动入口在哪?

在springboot中,是融合了tomcat的启动与加载的,那么关于tomcat的启动与加载的入口就是研究的第一步,在EmbeddedWebApplicationContext类中,重写了AbstractApplicationContext的finishRefresh()方法,如下: ? 1 2 3 4 5 6 7 8 ...

u014368614的博客 4995

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

tomcat原理解析(五):http请求处理

一概述 二http请求处理 三总结

qiangcai的专栏 3519

h5页面调用微信JS-SDK分享到微信好友或者朋友圈的配置

1.引入js <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> 2.在页面添加配置 <script type="text/javascript"> var url = location.href..

tiantiandashi的博客 2万+

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1220

request获取请求路径_从Tomcat入口了解Spring MVC的请求处理流程(2)

在上一篇 从Tomcat入口了解Spring MVC的请求处理流程 中主要介绍了spring mvc如何使用以及spring的DispatcherServlet加载细节以及URL映射配置,但是还是遗留了不少问题,现在就来具体讨论下之前提出的问题以及有哪些解决方案。rootContext 这是怎么一回事,是必须的么,和applicationContext.xml又有什么关系呢?xml配置的conte...

weixin_39549312的博客 335

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2006

【Tomcat源码阅读】IDEA导入源码(一)

一、下载Tomcat源码 Tomcat源码获取途径网上有很多,这里直接从Tomcat官网获取。目前Tomcat官网最新版本为:9.0.22 在页面底部,下载对应的zip文件。下载成功后解压,解压后如下图: 二、添加pom文件 启动Tomcat需要一些额外的jar包,因此在apache-tomcat-9.0.22-src在根目录新建pom.xml文件,引用jar包。Tomcat...

小嗨嗨的博客 1484

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

使用IDEA+Ant搭建Tomcat源码阅读环境

Tomcat,我们走。

sinat_37914371的博客 3790

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何阅读Java源码 阅读java的真实体会

刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动。 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。 说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,未必适合现在的你。 虽

Welcome 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

从0到1学会Tomcat,通过阅读源码来揭开Tomcat的神秘面纱

在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知识点都放到同一篇文章中, 我将把Tomcat系列文章分为Tomcat的启动, Tomcat中各模块的介绍和Tomcat中的设计模式三部分, 欢迎阅读与关注. 录制了一些视频来讲解Tomcat,配合我整理的一些文档来看可能更好理解一下,需要的朋友可以直接点击l蓝字领取。 一:通过idea搭建Tomcat源.

fly1north的博客 1588

How Tomcat works — 一、怎样阅读源码

在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法。一直想阅读一些开源项目,可是没有合适的机会开始。最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的session本身就支持,发现自己对于使用了这么久的东西还是不甚了解,所以就乘此机会来学习学习。 阅读源码已经两周了,之所以没有边读边总结是觉得一开始难以总揽全局,可能会以偏概全,所以在对整体上有所把握

lack的专栏 191

tomcat源码阅读(一)——环境搭建

tomcat源码阅读(一)——环境搭建

u013786323的博客 399

Tomcat8源码分析(一)

Tomcat源码分析(一)         ————导读这篇文章介绍一下tomcat源码阅读环境的搭建。源码下载源码的下载地址在 这里,版本为8.0.28,下载后直接解压至某一文件下即可。依赖的工具 Ant Eclipse Maven JDK7或以上 Tomcat自带的构建工具是Ant,但直接运用它的构建构建文件会缺少一些依赖的包,个人比较习惯用Maven管理,所以通过Maven来添加依赖包。以上的

DRFish 5338

搭建Tomcat源码阅读环境,无bug运行调试。答应我,和我一起学习Tomcat,不要放弃!

全网最好,没有之一,无bug运行Tomcat源码。经验分享,学习总结。

你学废了吗? 4551

使用OpenGrok阅读源码

文章目录0 前言1 准备工作1.1 Java 环境1.2 Tomcat 服务1.3 Universal Ctags2 配置 Open Grok2.1 下载2.2 解压 source.war2.3 添加 data root2.4 添加 source root2.5 配置configuration.xml2.6 启动OpenGrok3 添加源码目录 0 前言 打算本周再写一篇关于Android的文章,...

flueky的专栏 1771

Tomcat - 源码阅读环境搭建

Tomcat - 源码阅读环境搭建

业精于勤荒于嬉 509

tomcat源码阅读--BootStrap tomcat 入口类

本博客是原创:主要目的是为了自己总结学习的,不喜勿喷,当然里面有错误欢迎指出。 寒暄部分: BootStrap类是tomcat的入口 自然有一个main方法不要问我为什么 我也不知道是咋回事,百度搜到的或者说是慢慢磨出来的。现在联想到的问题就是我们平时用的tomcat是tomcat产品只需要执行脚本然后就可运行这个是tomcat源码编译过后的样子,然后在上面发布项目,那tomcat本身是怎么一...

cxdn_czj的博客 1496

源码阅读之Tomcat源码编译

最近工作中需要修改Tomcat中一些不常用的配置,在网上很难找到资料,于是就萌生了读一下Tomcat源码的想法,关于Tomcat编译的博客,网上有很多,但是大部分都是执行不成功,所以就在这把这两天折腾的结果记录一下,省的下次再使用时忘记。 Tomcat源码下载 可以通过Tomcat下载地址下载Tomcat8.5.64版本的源码,如果需要其他版本,请自行去官网下载。 Tomcat源码编译之ant下载 Tomcat源码是使用ANT进行编译的,所以要编译Tomcat源码,就需要安装ant,ant下载地

wang_jun_jie的博客 490

Tomcat源码解析(一):开坑!手把手教你读Tomcat源码。

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 Tomcat的使用已经十分方便,大部分人工作中可能都不会有二次开发它的必要了。那么我们为什么还需要阅读它的源码呢? 往往熟练...

g470268255g的博客 3954
上一篇: js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
下一篇: tomcat源码阅读(二) Digester方法详解
subuser
博客等级 码龄19年 31粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值