前言:tomcat启动(BootStrap),会由Server(LifeCycle)的start调用传递到StandardContext(LifeCycle)容器的start调用。
1、init初始化方法:加入ContextConfig listener,然后lifeCycleSupport.fireLifecycleEvent(INIT_EVENT),会触发ContextConfig的init方法,找到conf/context.xml和Catalina/localhsot/context.xml.default解析并将配置元素设置到context
2、lifeCycleSupport.fireLifecycleEvent(BEFORE_START_EVENT)
3、设置new WebAppLoader(getParentClassLoader)。parentClassLoader是shared loader。像Catalina,StandardServer,StandardContext,Wrapper都是有catalina loader加载的。
Bootstrap
|
System
|
Common
/ \
Catalina Shared
/ \
Webapp1 Webapp2
|
System
|
Common
/ \
Catalina Shared
/ \
Webapp1 Webapp2
4、postWorkDirectory创建work底下的临时目录,会根据engineName和hostName创建目录结构
5、children[i].start() 子容器启动。这里的子容器是StandardWrapper,包装了一个Servlet,start里面其实没有做啥事
6、pipeline.start() 会启动pipeline里面的所有valve
7、lifeCycleSupport.fireLifecycleEvent(START_EVENT),会触发contextConfig的start(),会找到con/web.xml和/WEB-INFO/web.xml文件解析并将配置设置到context
8、设置Manager(StandardManager)并manager.start(),会将上次关闭的时候持久化到SESSION.ser的文件读入内存
9、启动后台容器线程,包括WebappLoad.backgroundProcess会自动监控webApp的改变,还有Manager.backgroundProcess会自动清除过期的session,还有容器里面所有的valve.backgroudProcess
10、lifeCycleSupport.fireLifecycleEvent(AFTER_START)
11、listenerStart 将context中的applicationListeners进行类加载(通过webAppLoader加载),特别还调用了ServletContextListener.contextInitialized。像Spring的容器加载入口就是通过这个方法进入
12、filterStart 将context中的filter进行类加载,并调用filter.init(FilterConfig)
13、loadOnStartup(children),对配置了load-on-startup的servlet进行wrapper.load()。servletClass.newInstance(),调用servlet.init(ServletConfig),ServletConfig的实现StandardWrapperFacade用的是门面模式,将Wrapper隔离。ServletConfig有个主要方法,getServletContext,ServletContext是从StandardContext里面生成的
相关推荐
【标签】"tomcat源码分析"表明整个资料集专注于Tomcat的源代码级探索,适合于开发者或运维人员深入了解服务器的底层实现。 【文件名称列表】中的每个文档都对应一个特定主题: 1. "Tomcat处理HTTP请求源码分析.doc...
【TOMCAT源码分析(启动框架)】 Tomcat是一款广泛应用的开源Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Web应用程序提供了运行环境。本篇文章将深入探讨Tomcat的系统框架及其启动流程...
【标题】"Tomcat源码分析" 在深入探讨Tomcat源码之前,首先需要了解Tomcat是什么。Tomcat是一款开源的、基于Java的Web应用服务器,由Apache软件基金会开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,...
【Tomcat源码分析】 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目的一部分。深入理解Tomcat的源码对于开发者来说是非常有价值的,因为它可以帮助我们更好地理解和优化Web应用程序的性能...
《Tomcat源码分析1——服务启动与架构详解》 Tomcat,作为一款广泛应用的开源Java Servlet容器,其内部架构和启动流程对于深入理解和优化Web应用程序至关重要。本文将重点解析Tomcat启动时的关键步骤和核心组件,...
《深入理解Tomcat源码分析1:Connector配置详解》 Tomcat,作为广泛使用的Java Servlet容器,其核心组件之一就是Connector,它负责处理Web服务器与客户端之间的通信。本篇文章将详细探讨Tomcat Connector的种类、...
【Tomcat源码分析_v4 完整版1】这篇文档主要探讨了Tomcat源码中的部分核心概念,包括XML解析框架Digester的工作原理及其在Java对象映射中的应用。以下是对这些知识点的详细说明: **Java对象创建与管理:** 在...
### TOMCAT源码分析——启动框架详解 #### 一、前言 TOMCAT作为一款广泛使用的开源Java Servlet容器,其内部实现复杂且强大。本文旨在深入剖析TOMCAT的启动框架及其整体架构,帮助读者更好地理解其工作原理。...
tomcat的基础脚本分析 tomcat的源码启动分析 tomcat的web应用启动分析 tomcat的socket分析 tomcat的cocket与容器对接时序分析
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
《Tomcat6源码分析——深入理解Web服务器的运行机制》 Tomcat6作为Apache软件基金会的Jakarta项目的一部分,是一款广泛使用的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,为开发和部署...
### Tomcat架构的源码分析 #### 一、Tomcat的架构概述 Tomcat作为一款广泛使用的开源Java Servlet容器,其内部架构设计简洁而高效。本文档将对Tomcat的架构进行详细介绍,并从源码层面深入分析其核心组成部分。...
Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...
对 NIO 模式,请求的流程描述的很详细。值得去仔细的研究。