欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

它通过反射创建  Catalin 劳务派遣信息管理系统 a  的实例并对其进行初始化及启动

点击: 次  来源:昆山软开发 时间:2018-01-07

原文出处: Rainstorm

这个题目命的其实是很大的,写的时候照旧很忐忑的,但我尽大概把这个进程描写清楚。因为这是读过源码今后写的总结,在写的进程中大概会忽略一些前提条件,假如有哪些较量突兀就呈现,或欠好领略的处所可以给我提 Issue,我会尽快增补修订相关内容。

许多对象在时序图中浮现的已经很是清楚了,没有须要再一步一步的作先容,所以本文以图为主,然后对部门内容加以简朴表明。

  • 绘制图形利用的东西是 PlantUML + Visual Studio Code + PlantUML Extension
  • 图形 PlantUML 源文件:
    1. tomcat-architecture.pu
    2. tomcat-init.pu
    3. tomcat-start.pu
    4. tomcat-context-start.pu
    5. tomcat-background-thread.pu
  • 本文对 Tomcat 的先容以 Tomcat-9.0.0.M22 为尺度。

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

  • Overview
  • Tomcat init
  • Tomcat Start[Deployment]
  • Context Start
  • Background process
  • How to read excellent open source projects
  • At last
  • Reference

  • Overview

    1. Bootstrap 作为 Tomcat 对外界的启动类,在 $CATALINA_BASE/bin 目次下,它通过反射建设 Catalina 的实例并对其举办初始化及启动。
    2. Catalina 理会 $CATALINA_BASE/conf/server.xml 文件并建设 StandardServerStandardServiceStandardEngineStandardHost 等
    3. StandardServer 代表的是整个 Servlet 容器,他包括一个或多个 StandardService
    4. StandardService 包括一个或多个 Connector,和一个 EngineConnector 和 Engine 都是在理会 conf/server.xml 文件时建设的,Engine 在 Tomcat 的尺度实现是 StandardEngine
    5. MapperListener 实现了 LifecycleListener 和 ContainerListener 接口用于监听容器事件和生命周期事件。该监听器实例监听所有的容器,包罗 StandardEngineStandardHostStandardContextStandardWrapper,当容器有变换时,注册容器到 Mapper
    6. Mapper 维护了 URL 到容器的映射干系。当请求到来时会按照 Mapper 中的映射信息抉择将请求映射到哪一个 HostContextWrapper
    7. Http11NioProtocol 用于处理惩罚 HTTP/1.1 的请求
    8. NioEndpoint 是毗连的端点,在请求处理惩罚流程中该类是焦点类,会重点先容。
    9. CoyoteAdapter 用于将请求从 Connctor 交给 Container 处理惩罚。使 Connctor 和 Container 解耦。
    10. StandardEngine 代表的是 Servlet 引擎,用于处理惩罚 Connector 接管的 Request。包括一个或多个 Host(虚拟主机), Host 的尺度实现是 StandardHost
    11. StandardHost 代表的是虚拟主机,用于陈设该虚拟主机上的应用措施。凡是包括多个 Context (Context 在 Tomcat 中代表应用措施)。Context 在 Tomcat 中的尺度实现是 StandardContext
    12. StandardContext 代表一个独立的应用措施,凡是包括多个 Wrapper,一个 Wrapper 容器封装了一个 Servlet,Wrapper的尺度实现是 StandardWrapper
    13. StandardPipeline 组件代表一个流水线,与 Valve(阀)团结,用于处理惩罚请求。 StandardPipeline 中含有多个 Valve, 当需要处理惩罚请求时,会逐一挪用 Valve 的 invoke 要领对 Request 和 Response 举办处理惩罚。出格的,个中有一个非凡的 Valve 叫 basicValve,每一个尺度容器都有一个指定的 BasicValve,他们做的是最焦点的事情。
    14. StandardEngine 的是 StandardEngineValve,他用来将 Request 映射到指定的 Host;
    15. StandardHost 的是 StandardHostValve, 他用来将 Request 映射到指定的 Context;
    16. StandardContext 的是 StandardContextValve,它用来将 Request 映射到指定的 Wrapper
    17. StandardWrapper 的是 StandardWrapperValve,他用来加载 Rquest 所指定的 Servlet,并挪用 Servlet 的 Service 要领。

    Tomcat init