返回顶部
首页 > 资讯 > 精选 >Tomcat9中容器结构与生命周期的示例分析
  • 734
分享到

Tomcat9中容器结构与生命周期的示例分析

2023-06-02 14:06:51 734人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Tomcat9中容器结构与生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。容器的生命周期容器的结构上图为Tomcat容器的类图结构,所有容器会继承Lifecyc

这篇文章将为大家详细讲解有关Tomcat9中容器结构与生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

容器的生命周期

容器的结构

Tomcat9中容器结构与生命周期的示例分析
上图为Tomcat容器的类图结构,所有容器会继承LifecycleMBeanBase,而基类LifecycleMBeanBase实现了两个接口,Lifecycle和MBeanReGIStration,其中Lifecycle描述的容器的主要行为以及生命周期的变化,而MBeanRegistration则为Tomcat通过JMX进行监控

org.apache.catalina.Lifecycle
Tomcat9中容器结构与生命周期的示例分析
Lifecycle中主要的方法为init、start、stop、destory, Lifecycle包含12个状态,每个操作方法均对应状态的改变,构成了Tomcat容器的从初始创建到最终销毁的完整生命周期,Lifecycle的接口注释对此做出很好的解释。

下图为上一篇中Tomcat内部容器类结构图,可以看到各种类型的容器均实现了Lifecycle接口,各种类型容器按照机构进行聚合和组合,int()、start()等方法按照层级进行调用。
Tomcat9中容器结构与生命周期的示例分析

观察者模式

容器的状态发生变化时,Tomcat采用观察者模式,触发注册在容器上的监听,下面以LifecycleBase.init()方法为例进行说明。

org.apache.catalina.util.LifecycleBase

 @Override    public final synchronized void init() throws LifecycleException {        if (!state.equals(LifecycleState.NEW)) {            invalidTransition(Lifecycle.BEFORE_INIT_EVENT);        }        try {            setStateInternal(LifecycleState.INITIALIZING, null, false);            initInternal();            setStateInternal(LifecycleState.INITIALIZED, null, false);        } catch (Throwable t) {            handleSubClassException(t, "lifecycleBase.initFail", toString());        }    }//根据状态调用监听private synchronized void setStateInternal(LifecycleState state, Object data, boolean check)            throws LifecycleException {       ...省略其他代码...        this.state = state;        String lifecycleEvent = state.getLifecycleEvent();        if (lifecycleEvent != null) {            fireLifecycleEvent(lifecycleEvent, data);        }    } //调用监听protected void fireLifecycleEvent(String type, Object data) {        LifecycleEvent event = new LifecycleEvent(this, type, data);        for (LifecycleListener listener : lifecycleListeners) {            listener.lifecycleEvent(event);        }    }
  • init()方法在实际方法执行前触发LifecycleState.INITIALIZING状态对应的监听,在实际方法执行后触发LifecycleState.INITIALIZED状态对应的监听

  • 监听会在容器初始化时进行注册,例如在server.xml中server标签下的Listener标签

    <Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><!-- Security listener. Documentation at /docs/config/listeners.html<Listener className="org.apache.catalina.security.SecurityListener" />--><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!--Initialize Jasper prior to WEBapps are loaded. Documentation at /docs/jasper-howto.html --><Listener className="org.apache.catalina.core.JasperListener" /><!-- Prevent memory leaks due to use of particular java/javax apis--><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

Tomcat运行时序图

Tomcat9中容器结构与生命周期的示例分析

关于“Tomcat9中容器结构与生命周期的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Tomcat9中容器结构与生命周期的示例分析

本文链接: https://lsjlt.com/news/230239.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Tomcat9中容器结构与生命周期的示例分析
    这篇文章将为大家详细讲解有关Tomcat9中容器结构与生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。容器的生命周期容器的结构上图为Tomcat容器的类图结构,所有容器会继承Lifecyc...
    99+
    2023-06-02
  • Vue中生命周期的示例分析
    这篇文章将为大家详细讲解有关Vue中生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最简单的Vue 实例//html <div id=&q...
    99+
    2024-04-02
  • React中生命周期的示例分析
    这篇文章将为大家详细讲解有关React中生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。React的生命周期两张图带你理解 React的生命周期React的生命周期(旧)class&nbs...
    99+
    2023-06-20
  • Vue2.0生命周期的示例分析
    这篇文章主要为大家展示了“Vue2.0生命周期的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue2.0生命周期的示例分析”这篇文章吧。网上已经有很多...
    99+
    2024-04-02
  • vue生命周期的示例分析
    这篇文章主要介绍了vue生命周期的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue生命周期图解感谢你能够认真阅读完这篇文章,希望小编分享的“vue生命周期的示例分...
    99+
    2023-06-14
  • docker中pod生命周期的示例分析
    这篇文章给大家分享的是有关docker中pod生命周期的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 查看资源配置清单帮助  [root@master manifests]...
    99+
    2023-06-04
  • Vue生命周期实例分析总结
    目录1. 概述2. 页面钩子函数3. 生命周期函数1. 概述 每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化...
    99+
    2024-04-02
  • Vue中生命周期过程的示例分析
    这篇文章主要介绍Vue中生命周期过程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue 提供了11个钩子函数1,从创建到销毁发生的一系列状态叫做什么周期,在这个过程中vu...
    99+
    2024-04-02
  • Rust语言生命周期的示例分析
    本篇文章为大家展示了Rust语言生命周期的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Rust 官方博客发布了 2020 年度的 Rust 调查报告。此次...
    99+
    2024-04-02
  • angular4生命周期钩子的示例分析
    这篇文章主要介绍angular4生命周期钩子的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!理解Angular提供了生命周期钩子,把这些关键生命时刻暴露出来,赋予我们在它们发...
    99+
    2024-04-02
  • 基于Vue生命周期的示例分析
    这篇文章主要介绍基于Vue生命周期的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言Vue实例在创建时有一系列的初始化步骤,例如建立数据观察,编译模板,创建数据绑定等。在此...
    99+
    2024-04-02
  • Vue 2.0中生命周期与钩子函数的示例分析
    小编给大家分享一下Vue 2.0中生命周期与钩子函数的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue生命周期简介咱...
    99+
    2024-04-02
  • Android中Activity生命周期调用的示例分析
    这篇文章将为大家详细讲解有关Android中Activity生命周期调用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。状态活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就...
    99+
    2023-06-22
  • Angular中的生命周期实例分析
    今天小编给大家分享一下Angular中的生命周期实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • Vue中的生命周期实例分析
    这篇文章主要介绍“Vue中的生命周期实例分析”,在日常操作中,相信很多人在Vue中的生命周期实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue中的生命周期实例分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-29
  • Spring bean生命周期验证的示例分析
    这篇文章主要为大家展示了“Spring bean生命周期验证的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring bean生命周期验证的示例分析”这篇文章吧。一、从源码注释看be...
    99+
    2023-05-30
    spring bean
  • React的生命周期实例分析
    这篇文章主要讲解了“React的生命周期实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React的生命周期实例分析”吧!一、React生命周期React 生命周期分为三种状态 初始化...
    99+
    2023-07-02
  • Laravel的生命周期实例分析
    本篇内容主要讲解“Laravel的生命周期实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel的生命周期实例分析”吧!Laravel的生命周期 A世间万物皆有生命周期,当我们使用...
    99+
    2023-06-30
  • ES6中Promise生命周期和创建的示例分析
    这篇文章给大家分享的是有关ES6中Promise生命周期和创建的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:Promise的概念Promise的中文意思是‘承诺&#...
    99+
    2024-04-02
  • Vue中属性、方法、生命周期的示例分析
    这篇文章主要介绍了Vue中属性、方法、生命周期的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实例<!DOCTYPE ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作