`
ss1
  • 浏览: 79795 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《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方法中,把相应的“事件”传递给所有已注册的监 听器

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

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

分享到:
评论

相关推荐

    How Tomcat Works 读书笔记(第三章)

    《How Tomcat Works》这本书是理解Apache Tomcat服务器工作原理的重要资源,第三章主要探讨了Tomcat的架构和核心组件。以下是对这部分内容的详细解读: Tomcat作为一款开源的Java Servlet容器,其核心功能是解析...

    How Tomcat Works【英文PDF+中文HTML+源码】.zip

    3. **部署与生命周期管理**:Tomcat支持自动部署和热部署,只需将WAR文件或解压后的目录放入`webapps`目录下,Tomcat会自动识别并启动应用。应用的生命周期包括加载、初始化、服务、销毁等阶段。 4. **线程模型**:...

    How Tomcat Works 中文版+例程源码

    3. **生命周期管理**:Tomcat按照一定的生命周期管理Servlet,包括加载、初始化、服务、销毁等阶段。每个Servlet实例都有自己的生命周期,Tomcat会根据需要创建和销毁它们。 4. **连接器(Connector)**:Tomcat...

    How Tomcat Works 中文版.pdf

    通过阅读《How Tomcat Works》中文版,读者将能够获得对Tomcat架构的全面理解,学习到如何从源码级别研究和开发一个高性能的Java应用服务器,以及如何将其应用于实际的Web开发和服务器管理工作中。

    How Tomcat works(PDF)

    - **Catalina**:Catalina是Tomcat的核心组件,负责处理Servlet和JSP的生命周期,包括加载、初始化、服务和销毁等过程。 - **Connector**:连接器组件负责接收HTTP请求并将它们转换为内部Tomcat格式,同时将内部...

    How Tomcat Works 英文书及源码

    《How Tomcat Works》这本书是理解Apache Tomcat服务器工作原理的宝贵资源,它全面深入地讲解了这个流行的Java Servlet和JavaServer Pages(JSP)容器的内部机制。书中的20个章节涵盖了从基础概念到高级特性的广泛...

    How Tomcat Works 中文版

    《How Tomcat Works》是一本深入探讨Apache Tomcat工作原理的中文版书籍,对于Java Web开发者来说,理解Tomcat的工作机制至关重要。Tomcat是Apache软件基金会的Jakarta项目中的一个核心部分,它是一个开源的、免费的...

    HowTomcatWorks 中文版+源码.rar

    2. **生命周期管理**:Tomcat管理Servlet的生命周期,包括加载、初始化、服务、销毁等阶段,这些过程可以通过`web.xml`配置文件进行定制。 3. **线程模型**:Tomcat使用多线程模型处理请求,每个连接请求都会被分配...

    How Tomcat Works 中文版/英文版 + 源码

    4. **生命周期管理**:Servlet容器(如Tomcat)负责Servlet的生命周期,包括加载、初始化、服务、销毁等阶段。 5. **线程模型**:Tomcat使用基于请求的线程模型,当请求到达时,会从线程池中获取一个线程来处理请求...

    how tomcat works中英文版

    在Servlet和JSP方面,《How Tomcat Works》会讲解它们的生命周期,包括加载、初始化、服务、销毁等阶段。Servlet容器如何根据web.xml配置文件来管理Servlet实例,以及JSP如何被编译成Servlet并执行,这些都会在书中...

    HowTomcatWorks(书和源码)

    《How Tomcat Works》是一本深入解析Apache Tomcat工作原理的书籍,同时也包含了源码,为读者提供了理论与实践相结合的深入学习体验。Tomcat是一款广泛使用的开源Java Servlet容器,它是Apache软件基金会 Jakarta...

    <<How tomcat works>> 英文版 中文版 源码

    3. **JSP引擎**:探讨了JSP的生命周期,包括编译成Java类、加载到内存、实例化以及销毁等阶段,以及Tomcat中的Jasper引擎是如何处理JSP的。 4. **连接器(Connector)**:Tomcat提供了多种类型的连接器,如基于NIO...

    how tomcat works 中文版及源码

    4. **生命周期管理**:Tomcat对每个Servlet都进行了生命周期管理,包括加载、初始化、服务、销毁等阶段。 5. **部署**:Tomcat支持通过XML配置文件(web.xml)或注解来部署Web应用。部署时,Tomcat会解析这些配置...

Global site tag (gtag.js) - Google Analytics