宣告:本文摘抄參考自:
connector的主要功能:
聯結器主要用於對外交流,它負責接收外部的請求,然後把請求轉交給container進行處理。主要功能如下:
監聽網路請求、接受位元組流
根據應用層協議(http or ajp)把接受到位元組流轉換成tomcatrequest
把tomcatreqeust轉換成servletrequest
呼叫容器servlet,得到servletresponse
把servletrespone轉換成tomcatresponse
把tomcatresponse轉化成位元組流,返回給瀏覽器
基於以上詳細分析可知connector的主要功能可以抽象為三點
connector的內部元件
tomcat connector的**元件,主要有三個
endpoint-用於網路監聽
processor-用於協議解析處理
adapter-用於轉換,解耦connector和container
tomcat的類設計中增加了乙個protocolhandler, 把endpoint和processor,adapter封裝到了一起。先看乙個整體元件圖。
endpoint的介紹:
endpoint是通訊節點,實現了tcp/ip協議,包含兩個核心元件:
acceptor,主要用於監聽socket鏈結請求,
socketprocessor,用於處理接收到的 socket 請求,實現了runnable介面,在run方法中會呼叫processor對socket請求進行處理。
endpoint核心介面
public這裡面還有乙個executor, 這個是tomcat自己擴充套件的執行緒池。acceptor監聽到socket請求後,建立socketprocessor,由executor來執行socketprocessor。abstract
class abstractendpoint
acceptor核心**:
protectedsetsocketoption最終會呼叫endpoint的process方法。class acceptor extends
abstractendpoint.acceptor catch
(throwable t) }}
}
endpoint的process核心方法**如下:
publicsocketprocessor的抽象類socketevent event,
boolean
dispatch) else
executor executor =getexecutor();
executor.execute(sc);
//交給執行緒池進行處理
return
true
; }
publicsocketprocessor類abstract
class socketprocessorbaseimplements
runnable
dorun();}}
protected
abstract
void
dorun();
}
protected上面類中gethandler().process的具體實現。(handler的介面由endpoint的內部類進行定義。class socketprocessor extends socketprocessorbase
@override
protected
void
dorun()
}
protected至此、請求已經成功傳給可processor。static
class connectionhandlerimplements abstractendpoint.handler
}
processor和adapter
processor是應用層協議比如http的處理。他負責把請求傳給adapter。核心**如下。
@overrideadapter解耦了connector和container的關係,主要負責把tomcatrequest轉換為servletrequest,然後最終呼叫container,核心**如下.throws
ioexception
catch
(exception e)
return
null
; }
public至此請求到達了container,我們的servlet會對進行業務邏輯處理。void
service(org.apache.coyote.request req, org.apache.coyote.response res)
throws
exception
//calling the container
connector.getservice().getcontainer().getpipeline().getfirst().invoke(request, response);
}
細化流程:
Tomcat聯結器詳解
1.聯結器等同於nginx中的引擎。2.tomcat聯結器有三種執行模式bio nio apr 1 bio blocking i o,阻塞式i o操作 1 表示tomcat使用的是傳統的j a i o操作 即j a.io包及其子包 2 乙個執行緒處理乙個請求。3 缺點 併發量高時,執行緒數較多,浪費...
Tomcat 聯結器executor優化
tomcat 的自身引數的優化,修改配置檔案中的配置資訊,調整連線數,超時等。1.connector 聯結器的配置 tomcat 聯結器的三種方式 bio nio 和 apr,三種方式效能差別很大,apr 的效能最優,bio 的效能最差。而 tomcat 7 使用的 connector 預設就啟用的...
關於apache和tomcat的聯結器
mod jk2確實很爛。幾天的mod jk2的雲山霧罩之後,apache2 tomcat5用mod jk.so輕鬆搞定。儘管apache.也稱不建議使用令人唾棄的mod jk2.so了。但最新的tomcat中卻給出的mod jk2.so的預設配置檔案 workers2.properties。大家不要...