《How Tomcat Works》读书笔记(五):生命周期

第一次接触到“生命周期”这个词汇,是在软件工程的课程上,“软件的生命周期”,当时也是觉得有点玄,但还算可以理解:软件从需求分析到最后没人用,就像人的一生(人的“需求分析”是什么呢?这是个哲学问题...)

扯远了,回到tomcat。tomcat的“生命周期”非常简单,说白了是一个接口:org.apache.catalina.Lifecycle,内容如下:

public interface Lifecycle {
   public static final String START_EVENT = "start";
   public static final String BEFORE_START_EVENT = "before_start";
   public static final String AFTER_START_EVENT = "after_start";
   public static final String STOP_EVENT = "stop";
   public static final String BEFORE_STOP_EVENT = "before_stop";
   public static final String AFTER_STOP_EVENT = "after_stop";


   public void addLifecycleListener(LifecycleListener listener);
   public LifecycleListener[] findLifecycleListeners();
   public void removeLifecycleListener(LifecycleListener listener);
   public void start() throws LifecycleException;
   public void stop() throws LifecycleException;
}

看清楚了,其实就是一些常量加上start、stop这些方法。

那么这个接口存在的意义是什么呢?这其实和tomcat的架构有关,因为tomcat是以“容器”的方式来组织的,在前面的几章中也提到了,容器是 以树结构组织的,也就是除了根容器之外,其他容器肯定都有且仅有一个父容器,一层套一层。tomcat的启动一般是通过Bootstrape类来完成的, 这个类会调用根节点容器的启动方法。但是那么多的子容器怎么办呢,Bootstrape不可能一一启动它们;需要关闭tomcat时也是如此。唯一的办法 是定义一个统一的接口,把所有的启动、停止等与“生命周期”有关的方法组织到一块,这个接口就是Lifecycle。就好像人over了一般都要去殡仪 馆,还要做个户籍注销...

因此,一般容器的start方法里面,都会它所包含的子容器和其他实现了生命周期接口的组件的start方法,子容器又以此类推递归调用它们的子容器,整个tomcat就跑起来了~

Lifecycle Listener

Lifecycle 当然不会仅仅有start和stop这么简单,它还引入了类似GUI编程的“事件——监听”机制。具体来说就是 org.apache.catalina.LifecycleListener 接口,内容非常简单,就一个 lifecycleEvent(LifecycleEvent event) 方法,用于接收相应的事件。如果你接触过GUI编程,特别是java swing,猜也能猜到tomcat怎么做了——首先注册listener,然后在start或者stop方法中,把相应的“事件”传递给所有已注册的监 听器

至于有哪些“事件”呢?上面的接口定义里面已经告诉我们了,不再啰嗦

总的来说,这一章的内容还是非常好理解的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值