How tomcat works(深入剖析tomcat)生命周期Lifecycle
How Tomcat Works (6)生命周期Lifecycle
总体概述
这一章讲的是tomcat的组件之一,LifeCycle组件,通过这个组件可以统一管理其他组件,可以达到统一启动/关闭组件的目的,那么LifeCycle是如何实现看似如此神奇的功能的呢?
实现了LifeCycle接口的组件,可以触发如下的事件
- BEFORE_START_EVENT
- START_EVENT
- AFTER_START_EVENT
- BEFORE_STOP_EVENT
- STOP_EVENT
- AFTER_STOP_EVENT
而事件监听器LifeCycleListener,它监听到这些事件然后做出响应的举动,在这里就可以去统一的开启/关闭容器
主要类以及接口
LifeCycle接口
public interface Lifecycle {
/**
* The LifecycleEvent type for the "component start" event.
*/
//start事件,其实它就是个字符串
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";
//添加Listener
public void addLifecycleListener(LifecycleListener listener);
//返回实现了这个接口的容器所绑定的listener
public LifecycleListener[] findLifecycleListeners();
//移除某个listener
public void removeLifecycleListener(LifecycleListener listener);
//lifecycle接口最重要的两个方法,组件必须提供这两个方法的实现,以供父组件调用,
//实现父组件对于子组件的开启/关闭
public void start() throws LifecycleException;
public void stop() throws LifecycleException;
}
LifeEvent类
生命周期事件是org.apache.catalina.LifecycleEvent类的实例,其实这个类也很简单,对于上面的String进行了一些包装,添加了一些额外的属性而已,类定义如下
public final class LifecycleEvent
extends EventObject {
private Object data = null;
private Lifecycle lifecycle = null;
//这里的type就对应lifecycle中定义的那6个事件
private String type = null;
public LifecycleEvent(Lifecycle lifecycle, String type) {
this(lifecycle, type, null);
}
public LifecycleEvent(Lifecycle lifecycle, String type, Object data) {
super(lifecycle);
this.lifecycle = lifecycle;
this.type = type;
this.data = data;
}
public Object getData() {
return (this.data);
}
public Lifecycle getLifecycle() {
return (this.lifecycle);
}
public String getType() {
return (this.type);
}
}
How tomcat works(深入剖析tomcat)生命周期Lifecycle的更多相关文章
- Tomcat 8(九)解读Tomcat组件的生命周期(Lifecycle)
Tomcat 8(七)解读Bootstrap介绍过.运行startup.bat.将引发Tomcat一连串组件的启动.事实上这一连串启动是通过组件的生命周期(Lifecycle)实现的 今天来看看Lif ...
- How Tomcat works — 四、tomcat启动(3)
上一节说到StandardService负责启动其子组件:container和connector,不过注意,是有先后顺序的,先启动container,再启动connector,这一节先来看看conta ...
- How Tomcat works — 五、tomcat启动(4)
前面摆了三节的姿势,现在终于要看到最终tomcat监听端口,接收请求了. 目录 Connector Http11Protocol JIoEndpoint 总结 在前面的初始化都完成之后,进行Conne ...
- How Tomcat works — 二、tomcat启动(1)
主要介绍tomcat启动涉及到的一些接口和类. 目录 概述 tomcat包含的组件 server和service Lifecycle Container Connector 总结 概述 tomcat作 ...
- Yii2基本概念之——生命周期(LifeCycle)
人有生老病死,一年有春夏秋冬四季演替,封建王朝有兴盛.停滞.衰亡的周期律--"其兴也勃焉,其亡也忽焉".换句话说,人,季节,王朝等等这些世间万物都有自己的生命周期.同样地,在软件行 ...
- Vue 生命周期LIFECYCLE是8个吗?
vue生命周期钩子个数是:11个. export const LIFECYCLE_HOOKS = [ 'beforeCreate', 'created', 'beforeMount', 'mounte ...
- SpringXML方式配置bean的生命周期lifecycle
在Spring中容器在初始化某个bean的时候会有相应的生命周期,类似于Servlet,有相应的init,destory等方法 例如:如下service 1 2 3 4 5 6 7 8 9 10 11 ...
- tomcat 容器生命周期lifecycle
1.复习java的事件机制 java事件机制包括三个部分:事件.事件监听器.事件源. 事件:一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息. 事件监听器:实 ...
- 【tomcat】servlet原理及其生命周期
1.什么是servlet? Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序.而这些Servlet都要实现Servlet这个接口.其主要功能 ...
随机推荐
- Java学习的第四天
1.变量不可以重复命名并且 方法内定义的变量,必须初始化才能使用,方法内定义的变量在Java中又叫做局部变量. 单行注释:// 多行注释/* */ doc注释 /** *doc注释 * ...
- python制作电脑可执行exe文件
python获取IP.主机名.mac地址 关注公众号"轻松学编程"了解更多. 制作get_IP.py文件: import socket import uuid # 获取主机名 ho ...
- [Luogu P1122]最大子树和 (简单树形DP)
题面 传送门:https://www.luogu.org/problemnew/show/P1122 Solution 这是一道简单的树形DP题. 首先,我们可以转换一下题面,可以发现,题目要求我们求 ...
- 解决nginx中js修改不生效的问题
最近在做商城项目,使用nginx实现动静分离.结果在修改nginx文件夹下的js文件,浏览器访问网址现实的还是原来的旧的js文件.清理浏览器缓存,重启nginx均无效,最后在网上找到解决方案
- CF957E Contact ATC
二维偏序(逆序对) 因为风速vf,-w<=vf<=w,因此我们可以算出每一艘船到达原点的时间的取值范围 即取vf=w和vf=-w时,记ai为当vf=w时的用时,记bi为当vf=-w时的用时 ...
- 9.mysql性能优化-慢查询分析、优化索引和配置
目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 max_connections ...
- leetcode115:search -insert-position
题目描述 给出一个有序的数组和一个目标值,如果数组中存在该目标值,则返回该目标值的下标.如果数组中不存在该目标值,则返回如果将该目标值插入这个数组应该插入的位置的下标 假设数组中没有重复项. 下面给出 ...
- It is better to have the ability of fast learning
来自某位大佬: 内功=算法+数据结构+编译原理+操作系统原理+软件工程+英文 十足的自信心+强烈的求知欲+对Programming&&C&&CPP的执着+百折不挠的钻研 ...
- 内网渗透 day2-nmap和nc的使用
nmap和nc的使用 nmap的使用 1. nmap -sSV 172.16.100.214 -T4 -F -sS进行SYN扫描,是比较隐匿的 -sV探测打开端口的服务的信息 -sSV将上面两种一起使 ...
- 邻居子系统 arp 状态图