畢業(yè)設(shè)計(jì)代做網(wǎng)站java湖南網(wǎng)站建設(shè)工作室
在一臺(tái)電腦上啟動(dòng)tomcat,tomcat是server,即服務(wù)器。服務(wù)器只會(huì)被實(shí)例化一次,tomcat這只貓就是服務(wù)器。服務(wù)器下包含多個(gè)子節(jié)點(diǎn)服務(wù),即service,顧名思義就是對(duì)外提供服務(wù)。服務(wù)器通常只有一個(gè)服務(wù),默認(rèn)是卡特琳娜Catalina。
核心配置文件是server.xml
server
根節(jié)點(diǎn)就是Server,即tomcat貓🐱,只會(huì)被實(shí)例化一次,下面可以有多個(gè)service,但通常只有一個(gè),默認(rèn)為卡特琳娜Catalina.
service
Service組件的作用就是對(duì)外提供服務(wù)。
一個(gè)service有一個(gè)引擎,和按協(xié)議劃分的多個(gè)連接器connector,比如負(fù)責(zé)http協(xié)議(80端口)的連接器、負(fù)責(zé)https(443端口)的連接器、負(fù)責(zé)其他協(xié)議的連接器等等.....
連接器connector
連接器負(fù)責(zé)通信;引擎復(fù)雜請(qǐng)求的處理。
不同的連接器負(fù)責(zé)監(jiān)聽(tīng)不同的網(wǎng)絡(luò)端口(可配置端口),處理請(qǐng)求,比如http協(xié)議默認(rèn)的80端口。一個(gè)連接器即是一個(gè)線程,線程一直在循環(huán)運(yùn)行,接收所有先后到來(lái)的網(wǎng)絡(luò)請(qǐng)求,并將每一個(gè)請(qǐng)求都按對(duì)應(yīng)的協(xié)議轉(zhuǎn)換為不同的request對(duì)象,隨后將其作為參數(shù)使用引擎對(duì)象進(jìn)行調(diào)用。
host
引擎是一個(gè)容器,其中包含一個(gè)或多個(gè)host對(duì)象,也即虛擬主機(jī)。host的存在保證了單個(gè)tomcat實(shí)例支持多個(gè)域名或主機(jī)名,使得一臺(tái)tomcat可以去處理多種請(qǐng)求。【根據(jù)不同的目標(biāo)地址來(lái)區(qū)分不同的請(qǐng)求】
切記:host配置的是域名或主機(jī)名,一條URL中后面的請(qǐng)求方式等信息是取決于下面的context組件
context
為了實(shí)現(xiàn)一個(gè)虛擬主機(jī)下托管多個(gè)不同的web應(yīng)用程序(Context)每個(gè) <Context>
組件代表一個(gè)特定的Web應(yīng)用程序上下文,存放著該Web應(yīng)用程序的配置信息。
通過(guò)配置不同的 <Context>
,管理員可以為每個(gè)Web應(yīng)用程序定制獨(dú)特的設(shè)置,確保它們?cè)?strong>同一個(gè)虛擬主機(jī)下能夠獨(dú)立運(yùn)行且相互隔離。
因?yàn)閞equest對(duì)象包含完整的URL等信息,所以引擎能夠解析到對(duì)應(yīng)的虛擬主機(jī)host上(域名),進(jìn)而在虛擬主機(jī)上找到對(duì)應(yīng)的應(yīng)用,最終找到應(yīng)用下對(duì)應(yīng)的servlet(通常就是我們寫(xiě)的業(yè)務(wù)代碼)對(duì)請(qǐng)求進(jìn)行處理。
wrapper
一個(gè)Context應(yīng)用包含一個(gè)或多個(gè)servlet實(shí)例,同一個(gè)servlet的所有實(shí)例被Wrapper容器進(jìn)行統(tǒng)一管理。
host、Context、Wrapper都是容器。
連接器給出的request請(qǐng)求對(duì)象中包含了他要訪問(wèn)的servlet的詳細(xì)路徑,因此給到容器中,都能通過(guò)路徑準(zhǔn)確的傳遞給下一個(gè)容器(主機(jī)名:應(yīng)用名/servlet名)
當(dāng)我們編寫(xiě)的servlet完成(業(yè)務(wù)邏輯)之后,連接器將從引擎對(duì)象的方法調(diào)用獲得一個(gè)返回值response對(duì)象,最后再將respondse對(duì)象轉(zhuǎn)化為字節(jié)流返回給瀏覽器。
至此,一個(gè)請(qǐng)求的完整過(guò)程就結(jié)束了。這就是tomcat服務(wù)器的架構(gòu)和原理。