Tomcat源码解读--代码走读之(二十的2-4)connector.start(四十三)
HTTP/1.1与AJP/1.3,只是监听不同的端口,大体上都是相同的。下面介绍HTTP/1.1HTTP/1.1如下图,connector继承了LifecycleBase,所以执行LifecycleBase的start方法。
当前对象图如下。
1、setStateInternal(LifecycleState.STARTING_PREP, null,false),因为connector的ls的listeners为0,所以没有动作执行。
2、startInternal(),代码在connector中。
(1)、setState(LifecycleState.STARTING),因为connector的ls的listeners为0,所以没有动作执行。
(2)、protocolHandler.start()(在十四章介绍过对象赋值),调用父类AbstractProtocol的start方法,主要是记录日志和执行endpoint.start()(在十五章介绍过对象赋值)。
1)、执行JIoEndpoint的父类AbstractEndpoint的start方法,也就是调用startInternal()方法,如下图。
1))、createExecutor(),主要是创建一个线程池,并设置属性,设置名字,最小池子大小10个,最大池子大小200,存活时间60秒,优先级别5。如下图。
2))、initializeConnectionLatch(),创建一个新的LimitLatch,构造参数为200赋值给connectionLimitLatch。
3))、开启接受者的线程。主要是启动一个线程监听socket的消息,进行处理。
4))、开启管理超时的线程,主要是启动一个线程,处理超时socket。
(3)、mapperListener.start(),主要是调用父类LifecycleBase的start方法。
1)、setStateInternal(LifecycleState.STARTING_PREP,null, false),因为MapperListener的ls的listeners为0,所以没有动作执行。
2)、startInternal()
1))、setState(LifecycleState.STARTING),因为MapperListener的ls的listeners为0,所以没有动作执行。
2))、findDefaultHost(),主要是mapper.setDefaultHostName(defaultHost),defaultHost为localhost(server.xml中的host的name)。
3))、addListeners(engine)。主要是在container中增加containerListener和LifecycleListener,监听者为MapperListener。
4))、Container[]conHosts = engine.findChildren();,找到所有的host
5))、registerHost(host),后续介绍。
3)、setStateInternal(LifecycleState.STARTED,null, false),因为MapperListener的ls的listeners为0,所以没有动作执行。
3、setStateInternal(LifecycleState.STARTED, null, false),因为connector的ls的listeners为0,所以没有动作执行。
页:
[1]