启动

服务器启动

本页面描述了 Tomcat 服务器如何启动。有几种不同的方式来启动 Tomcat,包括:

  • 通过命令行。
  • 作为嵌入式服务器从 Java 程序启动。
  • 作为 Windows 服务自动启动。

为了记录 Tomcat 的启动过程,我们创建了一系列 UML 图。

图 1 展示了 Tomcat 如何启动、服务请求然后停止的概述。类加载器初始化后,Tomcat 使用 Digester 解析 server.xml,Digester 创建 server.xml 中定义的对象,使用 server.xml 中定义的属性值配置它们,然后启动 Server。主 Java 线程在 await() 方法中等待关机信号。一旦收到关机信号,Server 对象就会停止然后销毁。JVM 随后退出。

图 2 展示了 Tomcat 如何初始化上一步中由 Digester 创建的对象,以及何时创建额外的关键对象。一个 Server 可以有多个 Service,尽管通常只有一个。每个 Service 可以有多个 Connector。一个 Connector 实例与一个 Protocol 实例和一个 CoyoteAdapter 实例相关联。

图 3 展示了 Tomcat 如何启动由 Digester 创建的、并在上一步中初始化的对象。此图还显示了生命周期事件何时触发。Engine(以及其他容器)的启动有更多细节,这将在下一张图中显示。

图 4 展示了容器(Engines、Hosts、Contexts 和 Wrappers)如何与任何支持的 Clusters、Realms 和 Valves 一起启动。

图 5 展示了 Context 元素的启动过程,因为它比其他容器更复杂。

图 6 展示了 HostConfig 组件如何响应由 Host 触发的生命周期事件,以将 Web 应用程序部署到 Host。

图 7 展示了 ContextConfig 组件如何响应由 Context 触发的生命周期事件,以解析全局和应用程序提供的配置文件,创建合并的 web.xml 文件,然后与其他设置一起用于配置 Web 应用程序。

启动过程可以通过实现您自己的 LifecycleListeners 并将其注册到 server.xml 配置文件中,以多种方式进行定制。