http://tomcat.apache.org/tomcat-6.0-doc/architecture/startup/serverStartup.txt
1.从命令行启动
2.org.apache.catalina.startup.Bootstrap处理命令行参数 (start/stop)
3.假设命令行参数为: start , 过程如下:
a)Catalina.setAwait(true);
b)Catalina.load()
- initDirs() - >设置属性catalina.home等等
- 加载server.xml并使用digester进行解析
- 将System.out和System.err分配给SystemLogHandler类
c)Catalina.start()
- HTTP执行适当的HTML输出错误代码
- 部署所有的webapps(webapps&conf / Catalina / localhost / *.xml)
- 处理默认的web.xml(conf / web.xml), 然后处理应用程序web.xml(WEB-INF / web.xml)
- Engine中有一个后台线程在同步。如果上下文改变(war文件的时间戳,上下文xml文件,web.xml)则自动重新加载
d)Tomcat在HTTP端口上接收请求
- 适配器解析并将所有内容与request,Cookie,上下文相关联
- 调用JSP包装器(Jasper)这导致了JSP的实际编译。然后调用实际的servlet(由jsp编译而成)。
e)调用servlet类