Connector實例的創(chuàng)建已經(jīng)在Spring Boot啟動過程(四):Spring Boot內嵌Tomcat啟動中提到了:

  photoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓

   Connector是LifecycleMBeanBase的子類,先是設置LifecycleState為LifecycleState.NEW,構造首先執(zhí)行setProtocol,設置protocolHandlerClassName為"org.apache.coyote.http11.Http11NioProtocol"事實上它默認值就是這個,然后通過反射創(chuàng)建此協(xié)議處理器的實例,此時開始執(zhí)行Http11NioProtocol的構造函數(shù):

    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對象的靜態(tài)代碼塊。之后是外層AbstractHttp11Protocol的構造函數(shù),Handler就是這里初始化并set的,這部分和上一塊所有的set最后都是到endpoint的:

photoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓

網(wǎng)友評論