首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

tomcat学习|tomcat源码结构

小刀博客: https://www.lixiang.red 学习背景 提到tomcat,相信大家都不陌生,只要是搞web开发的,老师总会让我们把应用打成war包,然后再丢到tomcat的webapp里面...,那是不是就代表着我们可以不用学tomcat了?...学习准备 idea: 看源码,写代码的不二之选 tomcat 源码: 小刀fork 了一份,新建了一个分支,写一些注释之类的 https://github.com/weixiaodexiaoxiaodao.../tomcat 分支是 study_8_5 笔,本子: 好记性不如烂笔头,tomcat做为一个web容器中大佬级别的存在,只用肉眼,很难看穿他 小刀的微信交流群: 有什么会比一群人在一起学有意思呢?...Servlet通过JNDI查找 WEB容器提供的配置信息 tomcat 是一些附加功能,如websocket等 最后说两句 tomcat 这块,小刀也是刚开始细致的开始学,大家一起加油!!

89530

Tomcat源码分析

分析完核心类后,再看看Tomcat启动的过程,Tomcat启动的时序图如下所示: ?...通过以前的分析(Tomcat源码分析一)可知道当Tomcat启动的时候会启动Connector,此时Connector会通过ProtocolHandler把Endpoint启动起来。...在看老版Tomcat源码时,找到了答案,其实现思路主要是利用了线程的等待和唤起,HttpProcessor的实现正好基于此思路,时序图如下所示: ?...socket); } 当HttpConnector调用HttpProcessor.assign(socket)方法时,会给此线程赋予Socket对象,并唤起此线程,使其继续执行,assign方法的源码如下所示...incoming request is being assigned"); } 线程被唤起和赋予socket对象后,继续执行核心的process方法,HttpProcessor.run的完整源码如下所示

41620
您找到你想要的搜索结果了吗?
是的
没有找到

Tomcat - 源码构建Tomcat 8.5.55 启动

得到 apache-tomcat-8.5.55-src.zip ---- 源码搭建分析 我们在使用tomcat时,俩目录 conf 和 webapps 是不是经常需要修改? ?...一个负责tomcat的配置文件信息,一个负责应用 。 很显然,我们使用源码构建tomcat环境的时候,也要告诉tomcat这两个目录的位置,以便加载配置文件和应用。...不管形式怎么变, 使用tomcat编译好的二进制还是源码部署编译,tomcat该加载的配置文件都是一样的。...就好了,为了方便管理,所以在源码的一级目录下建个目录source) ---- 源码搭建步骤 (Maven管理) Step1....【tomcat源码运行需要加载配置文件】 -Dcatalina.home=D:\apache-tomcat-8.5.55-src\source -Dcatalina.base=D:\apache-tomcat

1.5K30

Tomcat源码分析一:源码导入

下载tomcat源码包 从tomcat官网tomcat.apache.org上下载tomcat8.x的源码包apache-tomcat-8.0.32-src.zip http://tomcat.apache.org.../download-80.cgi 生成IDE项目 源码包下的ant build.xml中已经包含了生成eclipse项目的target: <target name="ide-eclipse...进入<em>源码</em>根目录执行ant命令: > ant ide-eclipse 这个任务会去下载objenesis jar包,可能会报错由于默认的目标地址是googlecode,无法访问,通过访问外国网站代理先将其下载放到自己的某个服务器上开启...导入eclipse项目 接下来打开eclipse,file -> import -> Existing Projects into Workspace 选择<em>源码</em>目录导入<em>源码</em>; 导入<em>源码</em>后,项目还会报错...添加两个变量ANT_HOME和<em>TOMCAT</em>_LIBS_BASE,ANT_HOME设置为安装的ant的根目录,<em>TOMCAT</em>_LIBS_BASE设置为执行ant ide-eclipse命令生成的目录,我的是

1K100

深入调试tomcat源码

这篇文章写给那些像我想研究tomcat源码的朋友,下面直接进入正题: 1.去tomcat官网上下载tomcat源码,下载时建议选择国内镜像,速度快很多,我这篇文章使用的tomcat7.0.72...版本 2.新建一个java项目,然后在项目上右键选择“Build Path”的子菜单“Link Path”, 弹出下面界面 经过上面的步骤就完成了准备工作的80%了 3.将tomcat源码下面的conf...Debug Configuration进入下面的界面: 在Main class输入框输入org.apache.catalina.startup.Bootstrap,BootStap类的main方法是Tomcat...启动的入口 7.点击Debug,正式进入Debug模式,如果想跟踪调试Tomcat启动全过程,请选择上图中的“Stop in main”选项,这样启动后自动在Bootstrap类的main方法入口处自动停止

66111

tomcat源码解读三(2) tomcat中JMX的源码分析

在这里我是将tomcat中的jmx给拆分出来进行单独分析,希望通过此种方式能够尽可能的出现更多的问题,以便对其有更多的了解,首先需要声明的是tomcat的JMX是在jsvase原有的基础上做了一些复用...,这就必须了解一些JMX的实现过程 1.1.1 tomcat中JMX的UML图 ?...catch (Exception e) { throw new RuntimeException(e.toString()); } return on; }      就这样tomcat...的JMX是注册成功的,但是既然分析源码,我们肯定要知根问底,下面就看看如何获取Mbean注册表以及注册组件 1.1.2.2 获取Mbean注册表      主要调用Registry类的静态方法getRegistry.../** * tomcat中的JMX传入的两个参数都是null * 所以最终返回registry这个静态句柄的值 当然第一次为空是实例化了一个Registry实例 * */ public static

1.2K50

Tomcat源码 Connector(2)

Connector是Tomcat最核心的组件之一,负责处理一个WebServer最核心的连接管理、Net IO、线程(可选)、协议解析和处理的工作。...一、连接器介绍 在开始Connector探索之路之前,先看看Connector几个关键字 NIO:Tomcat可以利用Java比较新的NIO技术,提升高并发下的Socket性能 AJP:Apache...JServ Protocol,AJP的提出当然还是为了解决java亘古不变的问题——性能,AJP协议是基于包的长连接协议,以减少前端Proxy与Tomcat连接Socket连接创建的代价,目前Apache...通过JK和AJP_ROXY的方式支持AJP协议,需要注意的是,虽然Nginx作为代理服务器性能强劲,但其只能通过HTTP PROXY的方式与后端的Tomcat联系,因此如果从作为代理服务器的角度上讲,...让我们看看Tomcat文档对APR的介绍 Tomcat6文档 写道 Tomcat can use the Apache Portable Runtime to provide superior scalability

60610

tomcat学习|通过tomcat源码启动web项目

学习背景 上一波,我们学习了tomcat 中主要接口的方法及关系: https://www.lixiang.red/articles/2019/08/12/1565622240937.html 实际上源码只通过看...,也差不多只能看到这个地步了,后面就一直看的话,就很容易乱,有句话说:实践出真知 今天我们就一起通过tomcat源码,来启动我们日常的web应用,在中间,可以debug , 可以更好的看到整个过程 准备...然后把war包丢到tomcat的webapp目录下面 tomcat的配置 导入jar包到idea中 ant相关的配置可参考这篇文章 https://www.lixiang.red/articles/2019...修改tomcat 本身一些配置 删掉tomcat/webapps/examples 目录, 这里面都是一些示例,在源码编译中会报错,干扰我们的正常启动,可以先删掉 修改tomcat的端口号(可选)在 tomcat...启动tomcat 并跟踪 以前我们有聊过,在用shell 脚本启动tomcat时,是启动的Bootstrap.java这个类,并且跟上了参数start ?

1.9K20

tomcat源码解读二 tomcat的生命周期

1    生命周期 1.1    观察者模型 tomcat生命周期采用了观察者模式,所以在介绍生命周期的时候不得不介绍观察者模式 观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新...这就是简单的观察者模式的实现原理,现在我们来看一下tomcat生命周期是如何使用观察者的 1.2    生命周期时序图 这里只展示唤醒的时序图,添加一般是在解析标签实例化通过在规则begin中添加 1.3...    生命周期源码解读 由于生命周期采用的是观察者,所以我将以观察者模式的角度来解读,下面首先展示一张以standHost HostConfig举例的观察者模式的类图    生命周期中与观察者相对应的类...对应的是观察者的实例但是其是一个抽象类,具体实现是StandardHost等    LifecycleListener   对应的观察对象接口   HostConfig        对应的观察对象的实现 1.3.1  添加监听器 tomcat

1.1K60
领券