tomcat源码研读笔记—tomcat的初始化之二 StandardService的初始化
2018-03-21 17:30
501 查看
这一章节,我们来研读下StandardService,查看initialize方法源码如下:
public void initialize()
throws LifecycleException {
if (initialized)
throw new LifecycleException (
sm.getString("standardService.initialize.initialized"));
initialized = true;
// Initialize our defined Connectors
synchronized (connectors) {
for (int i = 0; i < connectors.length; i++) {
connectors[i].initialize();
}
}
}
从源码可以知道,standardService又将初始化操作传递给了Connector,但是同样的,我们在这里也疑惑了connectors属性是怎么来的,谁有动了我们的Connectors?有了上一次的经历,我们可以马上联想到了server.xml结构和Catalina中的createStartDigester,然后有了如下代码:
digester.addObjectCreate("Server/Service/Connector","org.apache.catalina.connector.http.HttpConnector","className");
digester.addSetProperties("Server/Service/Connector");
digester.addSetNext("Server/Service/Connector","addConnector","org.apache.catalina.Connector");
Digester创建了一个HttpConnector实例,因为HttpConnector是实现了Connector接口的,所以利用addConnector方法,为Service的Connects属性进行了赋值操作。
我们也做一个小小的总述:
standardservice初始化的时候,给static属性进行了赋值,同时通过Digestar,实例化了HttpConnector,并通过addConnector方法,给HttpConnector进行了一些属性赋值,如:connector.setService(this),同时调用了Connector的初始化initialize方法
我们根据初始化调用的关系,绘制了下类图如下:
1,实现service接口的StandardService通过Digester调用addConnector方法将实现了Connector接口的HttpConnector进行了实例化
2,StandardService调用initialize初始化的时候,将调用已经实例化的HttpConnector初始化动作initialize
public void initialize()
throws LifecycleException {
if (initialized)
throw new LifecycleException (
sm.getString("standardService.initialize.initialized"));
initialized = true;
// Initialize our defined Connectors
synchronized (connectors) {
for (int i = 0; i < connectors.length; i++) {
connectors[i].initialize();
}
}
}
从源码可以知道,standardService又将初始化操作传递给了Connector,但是同样的,我们在这里也疑惑了connectors属性是怎么来的,谁有动了我们的Connectors?有了上一次的经历,我们可以马上联想到了server.xml结构和Catalina中的createStartDigester,然后有了如下代码:
digester.addObjectCreate("Server/Service/Connector","org.apache.catalina.connector.http.HttpConnector","className");
digester.addSetProperties("Server/Service/Connector");
digester.addSetNext("Server/Service/Connector","addConnector","org.apache.catalina.Connector");
Digester创建了一个HttpConnector实例,因为HttpConnector是实现了Connector接口的,所以利用addConnector方法,为Service的Connects属性进行了赋值操作。
我们也做一个小小的总述:
standardservice初始化的时候,给static属性进行了赋值,同时通过Digestar,实例化了HttpConnector,并通过addConnector方法,给HttpConnector进行了一些属性赋值,如:connector.setService(this),同时调用了Connector的初始化initialize方法
我们根据初始化调用的关系,绘制了下类图如下:
1,实现service接口的StandardService通过Digester调用addConnector方法将实现了Connector接口的HttpConnector进行了实例化
2,StandardService调用initialize初始化的时候,将调用已经实例化的HttpConnector初始化动作initialize
相关文章推荐
- tomcat源码研读笔记—tomcat的初始化之一 StandardServer的初始化
- tomcat源码研读笔记—tomcat的接收请求之四 StandardContext接收请求
- tomcat源码研读笔记—tomcat的初始化之三 HttpConnector的初始化
- tomcat源码研读笔记—tomcat的启动之二 StandardService的启动
- tomcat源码研读笔记—tomcat的启动之三 StandardEngine的启动
- tomcat源码研读笔记—tomcat的启动之四 StandardHost的启动
- tomcat源码研读笔记—tomcat的启动之五 StandardContext的启动
- Tomcat源码分析(3)--StandardServer类中涉及到的初始化和启动
- tomcat源码研读笔记—tomcat的启动之六 StandardWrapper的启动
- tomcat源码阅读笔记二——初始化过程(下)
- Pyunit源码笔记之二 主函数import,初始化loader和流程概览
- tomcat源码研读笔记—tomcat的启动之七 HttpConnector的启动
- tomcat源码分析 StandardServer初始化过程
- tomcat源码研读笔记—tomcat的接收请求之一 HttpProcessor接收请求
- tomcat源码分析 StandardServer初始化过程
- tomcat源码研读笔记—tomcat的接收请求之三 StandardHost接收请求
- tomcat源码研读笔记—Catalina类
- 死磕Tomcat7源码之二:web组件初始化
- tomcat源码研读笔记—tomcat的启动之一 StandardServer的启动
- tomcat源码阅读笔记二——初始化过程(上)