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

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

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

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

  初始化NioEndpoint過程中初始化了NioSelectorPool,NioSelectorShared默認(rèn)為true,即所有的SocketChannel共享一個Selector;設(shè)置pollerThreadCount,socket超時(shí)時(shí)間等。然后就是將new出來的NioEndPoint一路super,直到AbstractProtocol:

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

  關(guān)于soLinger可以參考內(nèi)嵌Tomcat的Connector對象的靜態(tài)代碼塊。之后是外層AbstractHttp11Protocol的構(gòu)造函數(shù),Handler就是這里初始化并set的,這部分和上一塊所有的set最后都是到endpoint的:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

網(wǎng)友評論