tomcat原始碼分析學習筆記(一)

2021-06-25 19:51:01 字數 1669 閱讀 9906

——每天寥寥的幾筆,堅持下去,那將是乙份沉甸甸的積累。

今天的筆記是針對《how tomcat works》前兩章的一些個人總結。

1.理解客戶端套接字socket類的概念。套接字是網路連線的乙個端點,套接字使得乙個應用可以從網路中讀取和寫入資料,即兩台不同的計算機可以通過套接字實現位元組流資料的接收和傳送。

public socket(string host, int port)//乙個建構函式

2.理解服務端套接字serversocket類的概念。serversocket用於服務端時刻監聽請求,當有請求傳送到服務端時,seversocket物件會呼叫accept方法獲取得到那個來自客戶端的socket。

public serversocket(int port, int backlog, inetaddress bindingaddr)//backlog最大連線請求佇列長度

serversocket serversocket = new serversocket(8080, 1,inetaddress.getbyname("127.0.0.1"))

socket socket = serversocket.accept();

3.具體的簡要流程

客戶端通過http傳送請求

->伺服器接收請求,並用serversocket建立和獲得客戶端套接字socket

->用得到的套接字呼叫方法獲得輸入輸出位元組流物件input,output

->用兩個位元組流分別構造request和response物件

->request解析input裡面的內容,解析出客戶端具體訪問的資源名稱和位置

->根據資源位置和名稱判定是直接訪問資源還是交予相應的servlet的service方法處理

->servlet處理完,將結果寫到response中

public serversocket(int port, int backlog, inetaddress bindingaddr)//backlog最大連線請求佇列長度

serversocket serversocket = new serversocket(8080, 1,inetaddress.getbyname("127.0.0.1"))

inputstream input = null;

outputstream output = null;

while(true)else if()

....

}

4.觀察servlet介面的原始碼

public inte***ce servlet

由上可知,service方法的引數request,response分別是servletrequest,servletresponse型別的,因此,我們上面的簡化程式中的request和response類也應該實現這兩個介面。

其中servletrequest介面也奉上吧

public inte***ce servletrequest

接下來,不出意外,每天還會更新兩章的個人總結。讓知識湧入我的懷抱吧。大家共勉。

Tomcat原始碼分析

本文將會介紹tomcat的原始碼,並給出一些分析。org.apache.catalina.startup.bootstrap 該類是tomcat啟動的入口類,包含有main方法。它的主要工作包括 引數解析 環境變數讀取 設定 類載入器初始化 通過反射的方式來呼叫catalina。org.apache...

Tomcat 原始碼分析

tomcat 原始碼分析 bootstrap 引導過程 1 初始化自定義的類載入器 common shared catalina 2 建立並例項化第乙個元件類 catalina tomcat 元件體系 server service connector engine host context 實現li...

tomcat原始碼分析

1 執行環境 tomcat 版本 8.0.x 編譯工具 ant 執行ide idea13.1 2 tomcat架構組成 如下圖所示 server 其實就是background程式,在tomcat裡面的server的用處是啟動和監聽服務端事件 諸如重啟 關閉等命令。service 在tomcat裡面,...