目錄結(jié)構(gòu)
-
bin
內(nèi)部包含.sh
和.bat
分別是linux
和windows
的執(zhí)行文件 -
lib
依賴的jar
conf
-
catalina.policy
權(quán)限相關(guān)配置 -
server.xml
具體配置文件
Server節(jié)點(diǎn)
- Executor 線程池
- Connector 連接器等孵,管理對外的連接配置端口之類的呕缭。如果使用了線程池谈秫,這里的最大線程無效
web.xml
Servlet
- DefaultServlet 默認(rèn)的,加載靜態(tài)文件,圖片凹联,html,js等
- JspServlet 處理jsp的
mime-mapping Tomcat處理的文件類型
welcome-file-list 首頁
-
logs
日志
-
catalina.x.log
啟動日志 -
localhost_access_log
接收到的請求日志
部署
- 隱式部署, war包放到webapps里(一般不推薦未辆,程序和部署工具應(yīng)該隔離)
-
server.xml
配置Host
<Host name="localhost" appBean="webapps" unpackWARs="true" auto Deploy="true">
<!-- reloadable熱加載 -->
<Context path="/myUrl" docBase="d:/Demo" reloadable="true"> </Context>
...
- 創(chuàng)建
xml
conf/Catalina/localhost/my.xml
my.xml
<?xml version="1.0" encoding="UTF-8">
<Context path="/myUrl" docBase="d:/Demo" reloadable="true"> </Context>
然后就可以直接訪問/my
路徑進(jìn)入程序
結(jié)構(gòu)
結(jié)構(gòu)
Service(通過配置多個service和connector可以監(jiān)聽多個端口) -> engine(引擎) --> Host(虛擬主機(jī),域名)--> Context(應(yīng)用)-->wrapper(servlet)
- Bootstarp 入口類
- Catalina 啟動類
- server 服務(wù)器锯玛,代表整個tomcat(StandardServer是標(biāo)準(zhǔn)實(shí)現(xiàn) )
- Service 邏輯功能層咐柜,可以有多個
-
Connector
連接器,負(fù)責(zé)Tomcat
與客戶端通訊 (多個) -
Container
Service 的核心組件攘残,按照層級有Engine,Host,Context,Wrapper四種拙友,一個service只有一個Engine
-
Connector
發(fā)送Request
給Container
-
Container
返回Reponse
- Jasper jsp引擎
連接器
-
NIO
模式,
-
Channel
向Selector
注冊連接歼郭,讀寫IO事件 -
Selector
輪詢selectKey
集合 - 通過key找到對應(yīng)的
channel
通過綁定的buffer
進(jìn)行讀寫
- 流程解析
- ProtocolHandler 協(xié)議解析
- Endpoint Socker網(wǎng)絡(luò)連接處理
- Processor 處理Socker封裝成Request
- Adapter適配器將Request包裝成ServletRequest
容器遗契,責(zé)任鏈
Engine => Host => Context => Wrapper
Catalina.start()啟動tomcat start
啟動
增加VM參數(shù)
# 設(shè)置環(huán)境變量
-Dcatalina.home="D:\tomcat\build"