1. 程式人生 > >tomcat 解析(四)-處理http請求過程

tomcat 解析(四)-處理http請求過程

宣告:原始碼版本為Tomcat 6.0.35

前面的文章中介紹了Tomcat初始化的過程,本文將會介紹Tomcat對HTTP請求的處理的整體流程,更細節的。

在上一篇文章中,介紹到JIoEndpoint 中的內部類Acceptor用來接受Socket請求,並呼叫processSocket方法來進行請求的處理,所以會從本文這個方法開始進行講解。

1 2 3 4 5 6 7 8 9 10 11 12 protected boolean processSocket(Socket socket) {
try { if (executor == null) { getWorkerThread().assign(socket); else { executor.execute(new SocketProcessor(socket)); } catch (Throwable t) { //……此處略去若干程式碼 } return true; }

在以上的程式碼中,首先會判斷是否在server.xml配置了程序池,如果配置了的話,將會使用該執行緒池進行請求的處理,如果沒有配置的話將會使用JIoEndpoint中自己實現的執行緒池WorkerStack來進行請求的處理,我們將會介紹WorkerStack的請求處理方式。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 protected Worker getWorkerThread() { // Allocate a new worker thread synchronized (workers) { Worker workerThread; while ((workerThread = createWorkerThread()) == null) { try { workers.wait();
catch (InterruptedException e) { // Ignore } } return workerThread; } }

相關推薦

tomcat 解析-處理http請求過程

宣告:原始碼版本為Tomcat 6.0.35 前面的文章中介紹了Tomcat初始化的過程,本文將會介紹Tomcat對HTTP請求的處理的整體流程,更細節的。 在上一篇文章中,介紹到JIoEndpoint 中的內部類Acceptor用來接受Socket請求,

Mybaits 原始碼解析 ----- SqlSession的建立過程看懂框架原始碼再也不用死記硬背面試題

SqlSession是mybatis的核心介面之一,是myabtis介面層的主要組成部分,對外提供了mybatis常用的api。myabtis提供了兩個SqlSesion介面的實現,常用的實現類是DefaultSqlSession。它相當於一個數據庫連線物件,在一個SqlSession中可以執行多條SQL語句

Http狀態碼解析

1.4請求協議?     請求協議包括四部分:         請求行         

自己搭建自動化巡檢系統 處理鄰居列表

telnet遠程登錄 cisco python 通過之前的三次實驗,我們已經可以初步的使用python通過telnet來操作cisco設備,接下來開始新一期的實驗實驗目的:網絡巡檢,之後將信息存儲在數據庫中本次實驗需要再次拓展新的拓撲,,且實驗環境改為ubuntu,後續的拓展將改為在linux環境

Formik官方應用案例解析組件生命周期事件

ext discus side all trac mount prop use 新的 基礎 示例工程:formik-09x-component-lifecycle-events-example核心文件:index.js 示例說明 Formik大部分示例工程中都使用了極其方式

dva源碼解析

delay put 進入 exe global 導出 數據處理 參數 text 轉載 原文:https://blog.csdn.net/zhangrui_web/article/details/79651812 dva.js 知識導圖 不知大家學 react 或 dva

Spring原始碼解析——元件註冊4

  /** * 給容器中註冊元件; * 1)、包掃描+元件標註註解(@Controller/@Service/@Repository/@Component)[自己寫的類] * 2)、@Bean[匯入的第三方包裡面的元件] * 3)、@Import[快速給容器中匯入一個

Android圖片載入框架最全解析,玩轉Glide的回撥與監聽筆記

參考原文:Android圖片載入框架最全解析(四),玩轉Glide的回撥與監聽 回撥的原始碼實現 的Target物件傳入到GenericRequest當中,而Glide在圖片載入完成之後又會回撥GenericRequest的onResourceReady()方法,onReso

Okhttp解析網路連線的建立

Okhttp作為一款底層網路訪問框架,它和Volley等上層網路框架不一樣的地方在於,Okhttp自己實現了與服務端的TCP連線,並在此連線上根據HTTP協議的規範與服務端進行HTTP協議及內容的請求和響應。Okhttp將請求內容通過修正,填充等方式封裝成符合HTTP規範的HTTP請求內

TSM檔案格式及例項解析——string的排列

目錄 引: 資料 簡析 Indexes: blocks: 關聯string 小結: TSM檔案格式現已基本明瞭,某些壓縮演算法有空再去研究一下。 引: 現在想知道未壓縮的檔案格式是怎樣。 但是翻遍官方配置文件 https://docs.influx

REST處理HTTP狀態碼、異常和響應頭

REST(三)處理HTTP狀態碼、異常和響應頭 之前的內容只是討論了正確的處理結果,而沒有討論當沒有找到資源時的處理或者發生異常時的處理。當發生資源找不到或者處理邏輯發生異常時,需要考慮的時返回給客戶端HTTP抓鬼你太嗎和錯誤訊息的問題。為了簡化這些開發,Spring提供了實體封裝類

深度學習論文翻譯解析:Faster R-CNN: Down the rabbit hole of modern object detection

論文標題:Faster R-CNN: Down the rabbit hole of modern object detection 論文作者:Zhi Tian , Weilin Huang, Tong He , Pan He , and Yu Qiao 論文地址:https://tryolab

【Android自助餐】Handler訊息機制完全解析Looper解析

Android自助餐Handler訊息機制完全解析(四)Looper解析 Android自助餐Handler訊息機制完全解析四Looper解析 Looper 初始化prepare 提供loope

Java原始碼分析——java.util工具包解析——四大引用型別以及WeakHashMap類解析

    WeakHashMap是Map的一種很獨特的實現,從它的名字可以看出,它是存貯弱引用的對映的,先來複習一下Java中的四大引用型別: 強引用:我們使用的大部分引用實際上都是強引用,這是使用最普遍的引用。強引用的物件垃圾回收器絕不

Rxjava基本原理解析

    接著上一篇的分享模式,今天我們介紹和分析執行緒切換操作符subscribeOn以及其原始碼設計。     Rxjava的一個最大優點之一就是靈活的執行緒切換,切換過程不影響整體鏈式邏輯流程,既方便又清新。為了對比,還是再次將一個操作符的圖放上: subscri

Web學習筆記HTTP請求

HTTP請求流程 手頭有本《Web安全深度剖析》,感覺很裝逼,就看了看。 客戶端傳送Request請求,服務端返回Response請求 客戶端一般就是我們用的瀏覽器,服務端一般是高效能的計算機(組),比如www.baidu.com就代表一個伺服器的地址,即域名

Redis5.0原始碼解析----------跳躍表

基於Redis5.0 跳躍表(skiplist)是一種有序資料結構, 它通過在每個節點中維持多個指向其他節點的指標, 從而達到快速訪問節點的目的 跳躍表支援平均 O(log N) 最壞 O(N) 複雜度的節點查詢, 還可以通過順序性操作來批量處理節點。 在大部分

Spring原始碼解析:SpringMVC原始碼解析

SpringMVC是Spring一個非常重要的模組,從大體上看,在使用SpringMVC的時候,需要在web.xml中配置DispatcherServlet,這個DispatcherServlet可以看成是一個前端控制器的實現,web請求會通過它分發給各個對應的Control

spring mvc引數解析 HandlerMethodArgumentResolver

前面分析了webdatabinder的建立,下面就直接用此類繫結引數和引數型別解析,其中用到了PropertyEditor介面,ConversionService,Formatter。這三個都是用作引數型別轉換的。 如果一直跟著上面的程式碼最終會來到DataBi

php-laravel框架使用者驗證Auth模組解析忘記密碼

一、忘記密碼模組路由 路由名稱 請求方式 方法實現 /login GET 登入頁面 /login POST 實現登入功能 /logout POST