Connector实例的创建已经在Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动中提到了:

  photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

   Connector是LifecycleMBeanBase的子类,先是设置LifecycleState为LifecycleState.NEW,构造首先执行setProtocol,设置protocolHandlerClassName为"org.apache.coyote.http11.Http11NioProtocol"事实上它默认值就是这个,然后通过反射创建此协议处理器的实例,此时开始执行Http11NioProtocol的构造函数:

    public Http11NioProtocol() {        super(new NioEndpoint());
    }

  初始化NioEndpoint过程中初始化了NioSelectorPool,NioSelectorShared默认为true,即所有的SocketChannel共享一个Selector;设置pollerThreadCount,socket超时时间等。然后就是将new出来的NioEndPoint一路super,直到AbstractProtocol:

    public AbstractProtocol(AbstractEndpoint<S> endpoint) {        this.endpoint = endpoint;
        setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);
        setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);
    }

  关于soLinger可以参考内嵌Tomcat的Connector对象的静态代码块。之后是外层AbstractHttp11Protocol的构造函数,Handler就是这里初始化并set的,这部分和上一块所有的set最后都是到endpoint的:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

网友评论