Tomcat源码解读--代码走读之(二十的2-4)connector.start(四十三)

  HTTP/1.1AJP/1.3,只是监听不同的端口,大体上都是相同的。下面介绍HTTP/1.1

HTTP/1.1如下图,connector继承了LifecycleBase,所以执行LifecycleBasestart方法。



 

 

当前对象图如下。



 

1、setStateInternal(LifecycleState.STARTING_PREP, null,false),因为connectorlslisteners0,所以没有动作执行。

2、startInternal(),代码在connector中。



 

1)、setState(LifecycleState.STARTING),因为connectorlslisteners0,所以没有动作执行。

2)、protocolHandler.start()(在十四章介绍过对象赋值),调用父类AbstractProtocolstart方法,主要是记录日志和执行endpoint.start()(在十五章介绍过对象赋值)。

   1)、执行JIoEndpoint的父类AbstractEndpointstart方法,也就是调用startInternal()方法,如下图。



 

    1))、createExecutor(),主要是创建一个线程池,并设置属性,设置名字,最小池子大小10个,最大池子大小200,存活时间60秒,优先级别5。如下图。



 

    2))、initializeConnectionLatch(),创建一个新的LimitLatch,构造参数为200赋值给connectionLimitLatch



 

    3))、开启接受者的线程。主要是启动一个线程监听socket的消息,进行处理。



 

     4))、开启管理超时的线程,主要是启动一个线程,处理超时socket

3)、mapperListener.start(),主要是调用父类LifecycleBasestart方法。

   1setStateInternal(LifecycleState.STARTING_PREP,null, false),因为MapperListenerlslisteners0,所以没有动作执行。

   2)、startInternal()



 

   1))、setState(LifecycleState.STARTING),因为MapperListenerlslisteners0,所以没有动作执行。

   2))、findDefaultHost(),主要是mapper.setDefaultHostName(defaultHost)defaultHostlocalhostserver.xml中的hostname)。

   3))、addListeners(engine)。主要是在container中增加containerListenerLifecycleListener,监听者为MapperListener



 

   4))、Container[]conHosts = engine.findChildren();,找到所有的host

   5))、registerHost(host),后续介绍。

  3)、setStateInternal(LifecycleState.STARTED,null, false),因为MapperListenerlslisteners0,所以没有动作执行。

3setStateInternal(LifecycleState.STARTED, null, false),因为connectorlslisteners0,所以没有动作执行。

猜你喜欢

转载自83519144.iteye.com/blog/1887013
今日推荐