tomcat源码研读笔记—tomcat的初始化之二 StandardService的初始化

这一章节,我们来研读下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



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值