1. 概述
本章来分享一下Tomcat都有哪些核心组件,以及它们之间的关系是什么样的。
其实这和我们熟悉的配置文件“server.xml”的结构基本是一致的。 此文件位置为“conf/server.xml”,部署Tomcat的时候经常会修改其中的配置。
按照此XML文件的结构画了一副结构图(各组件详细的功能不止于此,随着后期内容的深入会继续丰富这幅图。),大家看着更直观一些:
(图一)
2. 从main方法开始
上文最后讲到,main方法的最后一部分是根据启动Tomcat时传入的args进行判断的语句,若传入的参数为空,则默认为“start".,进入对应的语句块:
if (command.equals("start")) { daemon.setAwait(true); daemon.load(args); daemon.start(); if (null == daemon.getServer()) { System.exit(1); } }
核心就是调用daemon的setAwait、load和start三个方法,从上一篇我们已经知道,这些方法都会以反射的方式找到catalinaDaemon(对应Catalina类)的对应方法,传入参数进行调用,此处不再重复。
setAwait会调用Catalina类的setAwait方法,对await变量赋值,这个变量的具体作用后文会解释。
/** * Use await. */ protected boolean await = false; public void setAwait(boolean b) { await = b; } public boolean isAwait() { return await; }
下面看一下load方法。