作者 | 知视
今天我们来聊聊tomcat各个组件是如何初始化的。
我们知道各个组件的初始化是在tomcat启动时调用Catalina对象的load()方法时执行的,到底具体是如何的呢?在这里我们详细展开聊一聊。
首先回到Catalina对象的load()方法,大概是这样的。
public void load() {
if (loaded) {
return;
}
loaded = true;
long t1 = System.nanoTime();
// 省略
......
// 创建和执行我们的 Digester
Digester digester = createStartDigester();
// 解析tomcat的server.xml文件为ConfigurationSource.Resource对象
try (ConfigurationSource.Resource resource = ConfigFileLoader.getSource().getServerXml()) {
InputStream inputStream = resource.getInputStream();
InputSource inputSource = new InputSource(resource.getURI().toURL().toString());
inputSource.setByteStream(inputStream);
digester.push(this);
|