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请求的全过程 立即下载

相关推荐

C语言头文件完全解析(连“#”我都给你讲明白)

C语言头文件完全解析 引言 本文将尽量详细的介绍c语言的头文件所包含的知识,如有错误,还望指正。 萌新们肯定疑惑为什么每次打代码都要写一个所谓的头文件(如:#include<stdio.h>),这里先简单让大家有个了解,你所用的 printf("%d",a)就是这个 stdio里的东西,如果没有这个头文件,编译器都不知道 printf是个什么东东。所以头文件就是一个准备好的大仓库,你可...

CRAZY_eyes的博客 7万+

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

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

jcw的博客 387

Cesium实战:3DTiles模型分层分户抽屉效果实现全攻略(附完整代码)

本文详细解析了在Cesium中为3DTiles模型实现分层分户抽屉效果的核心原理与完整代码。通过“主-副双模型”策略,结合属性过滤与矩阵变换,开发者能够创建出可交互、可探索的动态建筑可视化效果,适用于数字孪生、智慧城市及BIM可视化等场景。

d6e7f8g9h的博客 292

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

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

杨礼凯的专栏 6296

Qt Creator菜单栏消失的终极修复指南:从快捷键冲突到设置恢复

本文详细解析了Qt Creator菜单栏消失的常见原因及修复方法,包括快捷键冲突排查、配置文件重置和界面模式切换等解决方案。特别针对Qt开发者遇到的菜单栏显示问题,提供了从简单快捷键操作到深度配置修改的全方位指南,帮助用户快速恢复Qt Creator的正常使用。

weixin_27240351的博客 338

Linux密码破解(使用hydra工具和使用john暴力破解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、使用hydra离线破解linux密码1.准备实验环境2.创建用户名字典3.hydra密码爆破二、复制shadow文件,使用john暴力破解1.实验环境1.复制linux的shadow文件2.john暴力破解 一、使用hydra离线破解linux密码 1.准备实验环境 ①攻击机:kali_linux 2021.2(ifconfig查询IP地址:192.168.119.132) ②靶机:Ubantu 16.04(ifconfig

weixin_46447549的博客 2万+

springboot中tomcat的启动入口在哪?

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

u014368614的博客 4995

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

什么时候勾选Bake into pose,当不希望动画带动游戏对象旋转时。在旋转的动画中一般是不用勾选的,因为就需要用它来带动我们的角色对象旋转。但在比如前进、后退、待机等动画来说,我们就可以勾选这里,以避免因动画文件本身的瑕疵而给我们带来的旋转。loop match:代表了这个动画在角度上的吻合度。如果这个动画在播放中转角过大,那么就会显示红色,告诉我们如果勾选bake into pose,则会带来不好的效果。

weixin_60154963的博客 6804

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

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

qiangcai的专栏 3519

Matlab 普通kriging(克里金)插值

Matlab 普通kriging(克里金)插值

dayuhaitang1的博客 4570

《用 R 探索医药数据科学》目录(持续更新,已超 250 万字)|订阅前说明

我们重磅推出《用 R 探索医药数据科学》专栏!本文作为专栏【订阅后首读】的核心内容,堪称开启学习之旅的 “入门钥匙”,也是整个专栏最关键的一篇指引文。文中不仅完整呈现了专栏 9 大核心篇章 + 问答板块的详细目录,更囊括了订阅后必知的核心要点 —— 从阅读设备、实操工具的使用建议,到学习路径、更新规则的清晰说明,再到问题反馈、感悟记录的实用方法,一站式帮你摸清专栏框架、找准学习方向。建议各位订阅者务必认真阅读、吃透内容,这能让你后续的学习更高效、少走弯!

MD Code 1万+

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

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

weixin_39549312的博客 335

手把手教你安装 OpenClaw 小龙虾(MAC安装教程),一次成功不踩坑

本文详细介绍了在Mac上安装OpenClaw的完整流程。主要内容包括:1)准备工作(磁盘空间、网络环境、终端工具);2)安装Homebrew包管理器及常见问题解决;3)安装Node.js 22+版本(环境核心);4)Git安装与验证;5)OpenClaw项目克隆、依赖安装及运行配置;6)大模型配置方法(以MiniMax为例)。文章提供了详细的命令行操作步骤和常见错误解决方案,特别强调了网络环境要求和Apple Silicon芯片的原生支持注意事项。最后展示了验证配置成功的方法和资源获取渠道。

Chengbei11的博客 6338

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

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

小嗨嗨的博客 1484

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

Tomcat,我们走。

sinat_37914371的博客 3790

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

Welcome 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

从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、付费专栏及课程。

余额充值