目錄
一、說一說Tomcat的啟動流程
二、Tomcat中有哪些類加載器?
三、為什么Tomcat可以把線程數設置為200,而不是N+1?
四、Tomcat處理請求的過程怎樣的?
五、說一說Servlet的生命周期
六、過濾器和攔截器的區別?
七、介紹一下Tomcat的IO模型
八、說一說Tomcat的類加載機制?
一、說一說Tomcat的啟動流程
主要入口就是Bootstrap這個類,里面主要有三個方法,init、load和start。
bootstrap.init
- 加載啟動類:加載啟動相關的類加載器及類,創建Catelina對象。
bootstrap.load
- 加載配置文件:主要包括server.xml和web.xml,其中server.xml用于配置Tomcat的基礎服務,如端口號、線程池等;web.xml用于配置Web應用程序的參數、Servlet和過濾器等信息。
- 初始化組件:依次初始化Tomcat的各個組件,包括Server、Service、Connector、Engine、Host和Context,它們都是Tomcat運行的主要組成部分。
bootstrap.start
- 啟動服務:當所有組件初始化完成后,Tomcat會依次啟動Connector、Engine、Host和Context,最終啟動整個Tomcat服務。
- 部署應用:啟動完成后,會掃描指定的Web應用程序目錄,自動部署已經打包好的Web應用程序。
以上步驟執行完之后,一個Web應用就啟動了。后續有請求到達時,會根據請求的URL匹配相應的Context,然后將請求轉發