Tomcat源碼分析(一),tomcat源碼分析

來源:互聯網
上載者:User

Tomcat源碼分析(一),tomcat源碼分析

這段時間簡單的看了一下Tomcat的源碼,在這裡做個筆記!

  1. tomcat 架構圖

 

Catalina: tomcat的頂級容器,main()方法中就是通過,建立Catalina 對象執行個體,來啟動或者關閉 tomcat;

Server: 是管理tomcat所有組件的容器,包含一個或多個的service;

Service: Service是包含Connector和Container的集合,Service用適當的Connector接收使用者的請求,再發給相應的Container來處理;

Connector: 主要功能是 ◇socket的接收 ◇根據協議類型處理socket ◇封裝相應的request和response,交給Container;

Container: Engine容器接收來自Connector的請求,並且通過Pipeline依次傳遞給子容器的Pipeline;

Engine: 在Engine的Pipeline中的Valve的invoke方法中,根據request.getHost()來定位下一個host;

Host: 一個Web伺服器虛擬機器,管理著具體的 web application;

Context: 就是我們所部屬的具體Web應用的上下文,每個請求都是在具體的上下文中處理;

Wrapper:對應著Web的每一個 Servlet;

接下來,主要學習tomcat中的兩個最主要的容器,Connector和Container容器。

 

  2. Connector容器

Connector容器主要解決的問題就是Socket的接收,為了能夠很好的處理各種協議和並發非同步接收,Connector加入了兩個組件 ProtocolHandler和EndPoint。

ProtocolHandler的主要作用就是根據各個協議的定義按照一定的格式句分析協議頭,封裝成request和response對象;

AbstractEndPoint 致力於高並發的解決socket的接收和處理;

 

2.1 AbstractEndPoint

EndPoint 中兩個協同合作的Runnable:

(1) Accepter負責用ServerSocket.accept()來接收客戶請求,並且把建立串連之後的Socket交由Poller處理;

(2) Poller負責接收請求,並處理;

protected class Acceptor extends AbstractEndpoint.Acceptor (Acceptor implements Runnable)public class Poller implements Runnable

 Accepter和Poller的具體寫作(個人拙見)

 從中,我們可以發現,Acceptor接收到一個使用者的socket請求之後,將這個Socket封裝成PollerEvent,放入events隊列中。Poller實際上,一直while(true),當執行events隊列中有PollerEvent的時候,就會從自己的Selector中擷取到一個有資料的Channel,交給ProcessKey()處理。

 

2.1 ProtocolHandler

每一種協議都有各自具體定義,和具體的協議頭的格式,那麼我麼在接收到客戶請求之後,就應該根據協議的類型採用相應的解析方法。

ProtocolHandler的具體作用:

◆ 定義具體處理Socket的AbstractEndPoint;

◆ 提供解析請求的AbstractConnectionHandler來擷取具體的協議頭;

◆ 相關的init、start、stop方法

 

【參考文獻】

[1] http://blog.csdn.net/cutesource/article/details/5006062

[2] http://blog.csdn.net/yanlinwang/article/details/45648039

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.