Tomcat架构及启动过程是怎样的

发布时间:2021-12-31 16:30:03 作者:iii
来源:亿速云 阅读:114

这篇文章主要讲解了“Tomcat架构及启动过程是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Tomcat架构及启动过程是怎样的”吧!

Tomcat-9.0.0.M22 是 Tomcat 目前最新的版本,但尚未发布,它实现了 Servlet4.0 及 JSP2.3 并提供了很多新特性,需要  1.8 及以上的 JDK 支持等等,详情请查阅 Tomcat-9.0-doc

Tomcat-9.0-dochttps://tomcat.apache.org/tomcat-9.0-doc/index.html

Overview

Tomcat架构及启动过程是怎样的

Tomcat init

Tomcat架构及启动过程是怎样的
  1. 通过从 CatalinaProperties 类中获取 common.loader 等属性,获得类加载器的扫描仓库。CatalinaProperties  类在的静态块中调用了 loadProperties() 方法,从 conf/catalina.properties  文件中加载了属性.(即在类创建的时候属性就已经加载好了)。

  2. 通过 ClassLoaderFactory 创建 URLClassLoader 的实例

  1. EngineConfig。LifecycleListener 的实现类,触发 Engine  的生命周期事件后调用,这个监听器没有特别大的作用,就是打印一下日志

  2. HostConfig。LifecycleListener 的实现类,触发 Host 的生命周期事件后调用。这个监听器的作用就是部署应用程序,这包括  conf/

    // 目录下所有的 Context xml 文件 和 webapps 目录下的应用程序,不管是 war  文件还是已解压的目录。 另外后台进程对应用程序的热部署也是由该监听器负责的。
  3. ContextConfig。LifecycleListener 的实现类,触发 Context  的生命周期事件时调用。这个监听器的作用是配置应用程序,它会读取并合并 conf/web.xml 和 应用程序的 web.xml,分析  /WEB-INF/classes/ 和 /WEB-INF/lib/*.jar中的 Class 文件的注解,将其中所有的  Servlet、ServletMapping、Filter、FilterMapping、Listener 都配置到 StandardContext  中,以备后期使用。当然了 web.xml 中还有一些其他的应用程序参数,最后都会一并配置到 StandardContext 中。

Tomcat Start[Deployment]

Tomcat架构及启动过程是怎样的
  1. 解析 $CATALINA_BASE/conf/

    // 目录下所有定义 Context 的 XML 文件,并添加到  StandardHost。这些 XML 文件称为应用程序描述符。正因为如此,我们可以配置一个虚拟路径来保存应用程序中用到的图片,详细的配置过程请参考  开发环境配置指南 – 6.3. 配置图片存放目录
  2. 部署 $CATALINA_BASE/webapps 下所有的 WAR 文件,并添加到 StandardHost。

  3. 部署 $CATALINA_BASE/webapps 下所有已解压的目录,并添加到 StandardHost。

特别的,添加到 StandardHost 时,会直接调用 StandardContext 的 start() 方法来启动应用程序。启动应用程序步骤请看  Context Start 一节。

  1. addListeners(engine) 方法会将该监听器添加到 StandardEngine 和它的所有子容器中

  2. registerHost() 会注册所有的 Host 和他们的子容器到 Mapper 中,方便后期请求处理时使用。

  3. 当有新的应用(StandardContext)添加进来后,会触发 Host 的容器事件,然后通过 MapperListener 将新应用的映射注册到  Mapper 中。

Context Start

Tomcat架构及启动过程是怎样的
  1. 这个过程会解析并合并 conf/web.xml & conf/

    //web.xml.default &  webapps//WEB-INF/web.xml 中的配置。
  2. 配置配置文件中的参数到 StandardContext, 其中主要的包括 Servlet、Filter、Listener。

  3. 因为从 Servlet3.0 以后是直接支持注解的,所以服务器必须能够处理加了注解的类。Tomcat 通过分析 WEB-INF/classes/ 中的  Class 文件和 WEB-INF/lib/ 下的 jar 包将扫描到的 Servlet、Filter、Listerner 注册到  StandardContext。

  4. setConfigured(true),是非常关键的一个操作,它标识了 Context 的成功配置,若未设置该值为 true 的话,Context  会启动失败。

Background process

Tomcat架构及启动过程是怎样的

How to read excellent open source projects

真正的第一次阅读开源项目源代码,收获还是很大的。让我在架构设计、面向对象思想、设计模式、Clean  Code等等各个方面都有了进步。阅读优秀的开源项目其实是一件很爽的事,因为时不时的会发现一个新的设计思路,然后不由自主的感叹一声居然还可以这样!当然了,读的时候还是会有一些痛点的,比如说碰到一个变量,但是死活就是找不到初始化的位置,有时通过  Find Usage  工具可以找到,但有些找不到的只能从头开始再过一边源码。有时碰到一个设计思路死活都想不明白为什么这样设计等等,这种情况就只能通过分析更高一层的架构来解决了等等。

下面我简单分享一下我是如何阅读开源项目源码的。

  1. Structure  栏目可以自定义列出类中的域、方法,然后还可以按照继承结构对域和方法进行分组,这样就可以直接看出来域和方法是在继承结构中哪个类里定义的。当你点击方法和域时,还可以自动滚动到源代码等等。

  2. 在源代码中 点击右键 -> Diagrams -> show Diagram  可以显示类的继承结构,图中包含了该类所有的祖先和所有的接口。在该图中选择指定的父类和接口,点击右键 -> show Implementations,  IDEA 会列出接口的实现类或该类的子类。

  3. FindUsage、Go To Declaration 等等就不再多说了。

感谢各位的阅读,以上就是“Tomcat架构及启动过程是怎样的”的内容了,经过本文的学习后,相信大家对Tomcat架构及启动过程是怎样的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 什么是架构
  2. 什么是tomcat

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

tomcat

上一篇:Vs.Net 2010新特征是什么

下一篇:在Windows 10升级后遇到网络问题怎么解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》