欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

談談 Tomcat 請求處理流程

2021-02-15    分類: 網站建設

很多東西在時序圖中體現(xiàn)的已經非常清楚了,沒有必要再一步一步的作介紹,所以本文以圖為主,然后對部分內容加以簡單解釋。

繪制圖形使用的工具是 PlantUML + Visual Studio Code + PlantUML Extension

本文對 Tomcat 的介紹以 Tomcat-9.0.0.M22 為標準。

Tomcat-9.0.0.M22 是 Tomcat 目前最新的版本,但尚未發(fā)布,它實現(xiàn)了 Servlet4.0 及 JSP2.3 并提供了很多新特性,需要 1.8 及以上的 JDK 支持等等,詳情請查閱 Tomcat-9.0-doc。

https://tomcat.apache.org/tomcat-9.0-doc/index.html

  1. initServerSocket(),通過 ServerSocketChannel.open() 打開一個 ServerSocket,默認綁定到 8080 端口,默認的連接等待隊列長度是 100, 當超過 100 個時會拒絕服務。我們可以通過配置 conf/server.xml 中 Connector 的 acceptCount 屬性對其進行定制。
  2. createExecutor() 用于創(chuàng)建 Worker 線程池。默認會啟動 10 個 Worker 線程,Tomcat 處理請求過程中,Woker 最多不超過 200 個。我們可以通過配置 conf/server.xml 中 Connector 的 minSpareThreads 和 maxThreads 對這兩個屬性進行定制。
  3. Pollor 用于檢測已就緒的 Socket。默認最多不超過 2 個,Math.min(2,Runtime.getRuntime().availableProcessors());。我們可以通過配置 pollerThreadCount 來定制。
  4. Acceptor 用于接受新連接。默認是 1 個。我們可以通過配置 acceptorThreadCount 對其進行定制。

Request Process

Acceptor

  • 需要注意的是,基本上每一個容器的 StandardPipeline 上都會有多個已注冊的 Valve,我們只關注每個容器的 Basic Valve。其他 Valve 都是在 Basic Valve 前執(zhí)行。
  • request.getHost().getPipeline().getFirst().invoke() 先獲取對應的 StandardHost,并執(zhí)行其 pipeline。
  • request.getContext().getPipeline().getFirst().invoke() 先獲取對應的 StandardContext,并執(zhí)行其 pipeline。
  • request.getWrapper().getPipeline().getFirst().invoke() 先獲取對應的 StandardWrapper,并執(zhí)行其 pipeline。
  • 最值得說的就是 StandardWrapper 的 Basic Valve,StandardWrapperValve
  1. allocate() 用來加載并初始化 Servlet,值的一提的是 Servlet 并不都是單例的,當 Servlet 實現(xiàn)了 SingleThreadModel 接口后,StandardWrapper 會維護一組 Servlet 實例,這是享元模式。當然了 SingleThreadModel在 Servlet 2.4 以后就棄用了。
  2. createFilterChain() 方法會從 StandardContext 中獲取到所有的過濾器,然后將匹配 Request URL 的所有過濾器挑選出來添加到 filterChain 中。
  3. doFilter() 執(zhí)行過濾鏈,當所有的過濾器都執(zhí)行完畢后調用 Servlet 的 service() 方法。

Reference

  • 《How Tomcat works》
  • https://www.amazon.com/How-Tomcat-Works-Budi-Kurniawan/dp/097521280X
  • 《Tomcat 架構解析》– 劉光瑞
  • http://product.dangdang.com/25084132.html
  • Tomcat-9.0-doc
  • https://tomcat.apache.org/tomcat-9.0-doc/index.html
  • apache-tomcat-9.0.0.M22-src
  • http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.0.M22/src/
  • tomcat架構分析 (connector NIO 實現(xiàn))
  • http://gearever.iteye.com/blog/1844203

網站名稱:談談 Tomcat 請求處理流程
標題路徑:http://chinadenli.net/news30/101030.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計、品牌網站設計、網站內鏈服務器托管、自適應網站、標簽優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網站建設
国产精品国产亚洲看不卡| 成人精品亚洲欧美日韩| 国产女高清在线看免费观看| 欧美日韩综合在线第一页| 国产成人午夜在线视频| 99久久精品一区二区国产| 国产精品福利一二三区| 日韩精品一区二区一牛| 中国日韩一级黄色大片| 亚洲国产欧美精品久久| 中文字幕一区二区免费| 日韩精品第一区二区三区| 日韩中文字幕人妻精品| 91欧美亚洲精品在线观看| 久久精品国产亚洲av麻豆| 色哟哟哟在线观看视频| 免费特黄一级一区二区三区| 欧美国产在线观看精品| 亚洲高清中文字幕一区二区三区 | 四十女人口红哪个色好看| 美女露小粉嫩91精品久久久| 蜜桃臀欧美日韩国产精品| 日本一本在线免费福利| 欧美一区二区三区高潮菊竹| 最近的中文字幕一区二区| 亚洲日本中文字幕视频在线观看| 国产在线一区二区三区不卡 | 97人摸人人澡人人人超碰| 一二区不卡不卡在线观看| 高清国产日韩欧美熟女| 欧美区一区二区在线观看 | 久久偷拍视频免费观看| 国产欧美日韩在线精品一二区| 免费人妻精品一区二区三区久久久 | 九九热在线免费在线观看| 亚洲一区二区三区av高清| 国产精品欧美激情在线| 国产精品不卡高清在线观看| 国产精品亚洲一级av第二区| 久久亚洲成熟女人毛片| 日韩欧美中文字幕av|