Tomcat源码架构笔记(入口篇)

上一篇文章简单的梳理了下Tomcat的架构,这里我们分析跟踪下Tomcat是如何启动的?做了点什么?

TomcatTomcat


一点前置知识

上篇文章中说了,Tomcat有好多组件(server -> service -> Connector/Contaniner -> Engine -> Host -> Context -> Wrapper),一层套一层的。

那么Tomcat如何管理众多且复杂的组件们呢?

这里就来说下Tomcat组件生命周期统一管理接口——LifeCycie

Tomcat组件生命周期(实例创建 -> 销毁),为了统一规范管理组件的生命周期,Tomcat抽象出LifeCycie生命周期接口。

Tomcat源码架构笔记(架构篇)

本片主要简单的介绍记录下Tomcat的设计架构,及其好处。

同时搭建一个Tomcat源码的阅读架构。

Tomcat是Apache基金会旗下的项目Tomcat是Apache基金会旗下的项目


Tomcat功能(需求)

Tomcat作为开发和调试Servlet、JSP 程序的首选JavaWeb服务器(免费、开源)。

其核心的功能是什么?

或者可是说是他需要完成些什么动作(需求)?

Tomcat工作流程(简单)Tomcat工作流程(简单)

Tomcat主要功能可以分成以下两部分:

  • http服务器

    • 接受解析http报文
    • socket通信(tcp/ip)
  • Servlet容器

    • 处理具体业务逻辑
    • 多个Servlet(自带+自定义)

Tomcat源码阅读环境搭建

最近正在学习Tomcat架构,感觉自己懂了,其实只是感觉。学习这东西到底还是得自己动手去试试。

本篇文章就是记录一下我搭建Tomcat源码阅读环境的过程,和其中踩的坑。

info:本文为《Tomcat源码架构笔记》的配套文章。

下载Tomcat源码包

首先访问Tomcat官网,在左侧侧边栏中选择需要的Tomcat版本,来进入下载页面。

选择需要下载的Tomcat版本选择需要下载的Tomcat版本

Linux命令之 kill命令

kill命令是用来向指定的进程(terminate a process)发送一个信号,来控制进程是否终止/暂停/退出。

info:如果想结束指定用户所有进程可以试试killall命令

命令语法

kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明

kill -l [信号声明]
常用信号
HUP1终端断线
INT2中断(同 Ctrl + C)
QUIT3退出(同 Ctrl + \)
TERM15终止
KILL9强制终止
CONT18继续(与STOP相反, fg/bg命令)
STOP19暂停(同 Ctrl + Z)

Linux命令之 ps命令

ps(Process Status)命令使用来罗列当前系统中正在运行进程的状态。

info:ps命令查看的是进程的瞬时状态,它所提供的查看结果并不动态连续的;若想动态监控进程状态应使用top命令;终止进程使用kill命令
  • linux上进程有5种状态

    • 运行(正在运行或在运行队列中等待)
    • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
    • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
    • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
    • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
  • ps工具标识进程的5种状态码

    • R 运行 runnable (on run queue)
    • S 中断 sleeping
    • D 不可中断 uninterruptible sleep (usually IO)
    • Z 僵死 a defunct ("zombie") process
    • T 停止 traced or stopped

命令语法

ps [选项]