《深入拆解Tomcat&Jetty》——Tomcat主要组件

对,我就是那个看完一脸懵,回去啃代码的小渣渣

在这里插入图片描述

1、Tomcat一键启停

设计就是要找到系统的变化点和不变点。

如果想让一个系统能够对外提供服务,需要创建、组装并启动这些组件;在服务停止的时候,需要释放资源,销毁组件,这是一个动态过程。Tomcat组件之间存在两种关系:

  • 组件有大有小,大组建管理小组件。
  • 组件有内右外,外层组件控制内层组件。

总结来说,就是请求的处理过程是由外层组件来驱动的。

1.1、LifeCycle接口

系统中的不变点是:组件的创建、初始化、启动、状态及状态的转化。
变化点:每个组件的初始化(启动)方法。
将不变点抽象出来,就是LifeCycle接口。

因为组件的init()和start()调用是由它的父组件的状态变化触发的,可以把组件的生命周期转换成一个个状态,把状态的转变看作一个事件。子组件注册监听父组件的事件,就是观察者模式。
LifeCycle接口里的LifeCycleState定义如下:

public enum LifecycleState {
    NEW(false, null),
    INITIALIZING(false, Lifecycle.BEFORE_INIT_EVENT),
    INITIALIZED(false, Lifecycle.AFTER_INIT_EVENT),
    STARTING_PREP(false, Lifecycle.BEFORE_START_EVENT),
    STARTING(true, Lifecycle.START_EVENT),
    STARTED(true, Lifecycle.AFTER_START_EVENT),
    STOPPING_PREP(true, Lifecycle.BEFORE_STOP_EVENT),
    STOPPING(false, Lifecycle.STOP_EVENT),
    STOPPED(false, Lifecycle.AFTER_STOP_EVENT),
    DESTROYING(false, Lifecycle.BEFORE_DESTROY_EVENT),
    DESTROYED(false, Lifecycle.AFTER_DESTROY_EVENT),
    FAILED(false, null);

    private final boolean available;
    private final String lifecycleEvent;

    private LifecycleState(boolean available, Stri
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值