一文理解Tomcat!為你的春招做好準備!
Table of Contents generated with DocToc
Tomcat是什麼?
Tomcat 伺服器Apache軟體基金會專案中的一個核心專案,是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。
Tomcat 有哪幾種Connector 執行模式(優化)?
BIO:同步並阻塞
一個執行緒處理一個請求。缺點:併發量高時,執行緒數較多,浪費資源。Tomcat7或以下,在Linux系統中預設使用這種方式。
NIO:同步非阻塞IO
利用Java的非同步IO處理,可以通過少量的執行緒處理大量的請求,可以複用同一個執行緒處理多個connection(多路複用)。Tomcat8在Linux系統中預設使用這種方式。
APR:即Apache Portable Runtime
從作業系統層面解決io阻塞問題。
Tomcat有幾種部署方式?
Tomcat容器是如何建立servlet類例項?用到了什麼原理?
- 當容器啟動時,會讀取在webapps目錄下所有的web應用中的web.xml檔案,然後對 xml檔案進行解析,並讀取servlet註冊資訊。然後,將每個應用中註冊的servlet類都進行載入,並通過 反射的方式例項化。(有時候也是在第一次請求時例項化)
- 在servlet註冊時加上1如果為正數,則在一開始就例項化,如果不寫或為負數,則第一次請求例項化。
Tomcat頂層架構
Tomcat中最頂層的容器是Server,代表著整個伺服器,從上圖中可以看出,一個Server可以包含至少一個Service,即可以包含多個Service,用於具體提供服務。
Service主要包含兩個部分:Connector和Container。從上圖中可以看出 Tomcat 的心臟就是這兩個元件,他們的作用如下:
- Connector用於處理連線相關的事情,並提供Socket與Request請求和Response響應相關的轉化;
- Container用於封裝和管理Servlet,以及具體處理Request請求;
一個Tomcat中只有一個Server,一個Server可以包含多個Service,一個Service只有一個Container,但是可以有多個Connectors,這是因為一個服務可以有多個連線,如同時提供Http和Https連結,也可以提供向相同協議不同埠的連線
多個 Connector 和一個 Container 就形成了一個 Service,有了 Service 就可以對外提供服務了,但是 Service 還要一個生存的環境,必須要有人能夠給她生命、掌握其生死大權,那就非 Server 莫屬了!所以整個 Tomcat 的生命週期由 Server 控制。
相關文章
- 一文了解Solr框架!為你的春招做好準備!Solr框架
- 萬字長文帶你深入理解Kafka!為春招面試做好準備!Kafka面試
- 萬字常人帶你深入理解Zookeeper!為你的春招做好準備!
- 萬字長文帶你深入理解netty!為你的春招做好準備!Netty
- 新手程式設計師該如何準備面試?【備戰春招/秋招系列】程式設計師面試
- 【備戰春招/秋招系列】初出茅廬的程式設計師該如何準備面試?程式設計師面試
- 為三角學做好準備
- 為限制和連續做好準備
- 秋招還有 1 個月到達戰場,請做好準備 !
- Fedora 31 已經為 Python 3.8 做好了準備Python
- 美國白宮:為人工智慧的未來做好準備人工智慧
- 為複合函式和反函式做好準備函式
- 【備戰春招/秋招系列】Java程式設計師必備書單Java程式設計師
- 300道Python面試題,備戰春招!Python面試題
- 我是如何準備阿里的社招面試,給準備java社招的朋友的一個建議!阿里面試Java
- 華為2019春招筆試題筆試
- 聚焦亞洲:為後疫情時代做好準備(附下載)
- 擁抱數字化積極轉型,你做好準備了嗎?
- 從零開始準備的前端春招實習(已拿頭條阿里騰訊提前批offer)前端阿里
- 全球GDP縮減航空業如何為信貸疲軟做好準備?
- 雲平臺參與者為工業5G做好準備
- 為什麼 Flutter 已經為企業應用程式開發做好了準備Flutter
- 【備戰春招/秋招系列】程式設計師的簡歷就該這樣寫程式設計師
- 備戰2022春招,這十道題必回!
- 如何準備校招技術面試面試
- 聽說你們春節要出去玩?我要學好Flutter為升職加薪做準備了!Flutter
- 大學生想進入IT行業,這7項準備你做好了嗎?行業
- 企業需要提前為2020年6個趨勢的資料和分析做好準備
- 春招苦短,我用百道 Python 面試題備戰Python面試題
- 春招苦短,我用百道Python面試題備戰Python面試題
- 裁員了,很嚴重,大家做好準備吧!
- 面對SQL Azure DBA該做好哪些準備?URSQL
- AI未來可期,企業如何做好準備?AI
- 程式設計師想月薪過萬?這些面試準備你做好了嗎?程式設計師面試
- 專為Python初學者準備的IDE你用過嗎?PythonIDE
- 渣本的春招修仙之路
- Esri總裁用96頁PPT告訴你GIS的未來將如何發展,而我們又要為此做好哪些準備
- 我如何用三個月備戰春招 | 掘金技術徵文。