關(guān)于Tomcat的服務(wù)器使用及說(shuō)明
Tomcat的服務(wù)器使用
環(huán)境搭建完之后,就是需要tomcat的配置了,那先了解下tomcat是什么,可以干嘛。
Tomcat 是由 Apache 開發(fā)的一個(gè) Servlet 容器,實(shí)現(xiàn)了對(duì)Servlet 和 JSP 的支持,并提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺(tái)、安全域管理和Tomcat閥等。
由于 Tomcat 本身也內(nèi)含了一個(gè) HTTP 服務(wù)器,它也可以被視作一個(gè)單獨(dú)的 Web 服務(wù)器。
但是,不能將 Tomcat 和 Apache HTTP 服務(wù)器混淆,ApacheHTTP 服務(wù)器是一個(gè)用 C 語(yǔ)言實(shí)現(xiàn)的 HTTP Web 服務(wù)器;這兩個(gè) HTTPweb server 不是捆綁在一起的。
Tomcat 包含了一個(gè)配置管理工具,也可以通過(guò)編輯XML格式的配置文件來(lái)進(jìn)行配置。
B/S工作流程
上面主要可以看到分兩個(gè)部分,一個(gè)是HTTP請(qǐng)求,一個(gè)是HTTP響應(yīng)。
請(qǐng)求分兩種:動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求。
- 動(dòng)態(tài)請(qǐng)求:jsp、cgi、asp、php
- 靜態(tài)請(qǐng)求:html、htm
什么是WEB容器:處理動(dòng)態(tài)請(qǐng)求,可以直接連接數(shù)據(jù)庫(kù)。
1.1 tomcat主要目錄
- /bin – Tomcat: 腳本存放目錄(如啟動(dòng)、關(guān)閉腳本)。 *.sh 文件用于 Unix 系統(tǒng); *.bat 文件用于 Windows 系統(tǒng)。
- /conf – Tomcat: 配置文件目錄。
- /lib--Tomcat:tomcat服務(wù)器所需要的各個(gè)庫(kù)文件
- /logs – Tomcat: 默認(rèn)日志目錄。
- /webapps – Tomcat:web應(yīng)用程序存放的目錄,web項(xiàng)目保存到此目錄即可發(fā)布。
- /work-- Tomcat:臨時(shí)文件夾,生成所有的臨時(shí)文件(*.java、*.class)
1.2 Web工程發(fā)布的目錄結(jié)構(gòu)
|-- myWebApp# 站點(diǎn)根目錄 |-- META-INF # META-INF 目錄 | `--MANIFEST.MF # 配置清單文件 |-- WEB-INF # WEB-INF 目錄 | |-- classes# class文件目錄 | | |--*.class # 程序需要的class 文件 | | `-- *.xml# 程序需要的xml 文件 | |-- lib # 庫(kù)文件夾 | | `-- *.jar# 程序需要的jar 包 | `-- web.xml # Web應(yīng)用程序的部署描述文件 |-- <userdir># 自定義的目錄 |-- <userfiles># 自定義的資源文件
- myWebApp:工程發(fā)布文件夾。其實(shí)每個(gè) war 包都可以視為 myWebApp的壓縮包。
- META-INF:META-INF 目錄用于存放工程自身相關(guān)的一些信息,元文件信息,通常由開發(fā)工具,環(huán)境自動(dòng)生成。
- WEB-INF:Java web應(yīng)用的安全目錄。所謂安全就是客戶端無(wú)法訪問(wèn),只有服務(wù)端可以訪問(wèn)的目錄。
- /WEB-INF/classes:存放程序所需要的所有 Java class 文件。
- /WEB-INF/lib:存放程序所需要的所有 jar 文件。
- /WEB-INF/web.xml:web 應(yīng)用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet和組成應(yīng)用的其它組件,以及應(yīng)用初始化參數(shù)、安全管理約束等。
查看服務(wù)是否已經(jīng)安裝好,先測(cè)一下。
在瀏覽器輸入你的公網(wǎng)ip:8080,出現(xiàn)下面網(wǎng)頁(yè)表示安裝成功。
1.3 server.xml 配置
server.xml的結(jié)構(gòu):
注意:Service中可以有多個(gè)Connector元素,Host中可以有多個(gè)Context元素。
1.3.1 Server元素
Server 元素表示整個(gè) Catalina servlet 容器。
因此,它必須是 conf/server.xml 配置文件中的根元素。它的屬性代表了整個(gè) servlet 容器的特性。
表 2?1 Server屬性表
屬性 | 描述 | 備注 |
className | 這個(gè)類必須實(shí)現(xiàn)org.apache.catalina.Server接口。 | 默認(rèn) org.apache.catalina.core.StandardServer |
address | 服務(wù)器等待關(guān)機(jī)命令的TCP / IP地址。如果沒(méi)有指定地址,則使用localhost。 | |
port | 服務(wù)器等待關(guān)機(jī)命令的TCP / IP端口號(hào)。設(shè)置為-1以禁用關(guān)閉端口。 | |
shutdown | 必須通過(guò)TCP / IP連接接收到指定端口號(hào)的命令字符串,以關(guān)閉Tomcat。 |
1.3.2 Service元素
Service元素表示一個(gè)或多個(gè)連接器組件的組合,這些組件共享一個(gè)用于處理傳入請(qǐng)求的引擎組件。Server 中可以有多個(gè) Service。
表2? 2?2 Service屬性表
屬性 | 描述 | 備注 |
className | 這個(gè)類必須實(shí)現(xiàn)org.apache.catalina.Service接口。 | 默認(rèn) org.apache.catalina.core.StandardService |
name | 此服務(wù)的顯示名稱,如果您使用標(biāo)準(zhǔn) Catalina 組件,將包含在日志消息中。與特定服務(wù)器關(guān)聯(lián)的每個(gè)服務(wù)的名稱必須是唯一的。 |
實(shí)例 - conf/server.xml 配置文件示例
<?xml version="1.0" encoding="UTF-8"?> <Serverport="8080"shutdown="SHUTDOWN"> <Servicename="xxx"> ... </Service> </Server>
1.3.3 Executor元素
Executor表示可以在Tomcat中的組件之間共享的線程池。
表2?3 Executor 屬性表
屬性 | 描述 | 備注 |
className | 這個(gè)類必須實(shí)現(xiàn)org.apache.catalina.Executor接口。 | 默認(rèn) org.apache.catalina.core.StandardThreadExecutor |
name | 線程池名稱。 | 要求唯一, 供Connector元素的executor屬性使用 |
namePrefix | 線程名稱前綴。 | |
maxThreads | 最大活躍線程數(shù)。 | 默認(rèn)200 |
minSpareThreads | 最小活躍線程數(shù)。 | 默認(rèn)25 |
maxIdleTime | 當(dāng)前活躍線程大于minSpareThreads時(shí),空閑線程關(guān)閉的等待最大時(shí)間。 | 默認(rèn)60000ms |
maxQueueSize | 線程池滿情況下的請(qǐng)求排隊(duì)大小。 | 默認(rèn)Integer.MAX_VALUE |
<Servicename="xxx"> ? <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="300"minSpareThreads="25"/> </Service>
1.3.4 Connector元素
Connector代表連接組件。Tomcat 支持三種協(xié)議:HTTP/1.1、HTTP/2.0、AJP。
表2?4Connector屬性表
屬性 | 說(shuō)明 | 備注 |
asyncTimeout | Servlet3.0規(guī)范中的異步請(qǐng)求超時(shí) | 默認(rèn)30s |
port | 請(qǐng)求連接的TCP Port | 設(shè)置為0,則會(huì)隨機(jī)選取一個(gè)未占用的端口號(hào) |
protocol | 協(xié)議. 一般情況下設(shè)置為 HTTP/1.1,這種情況下連接模型會(huì)在NIO和APR/native中自動(dòng)根據(jù)配置選擇 | |
URIEncoding | 對(duì)URI的編碼方式. | 如果設(shè)置系統(tǒng)變量org.apache.catalina.STRICT_SERVLET_COMPLIANCE為true,使用 ISO-8859-1編碼;如果未設(shè)置此系統(tǒng)變量且未設(shè)置此屬性, 使用UTF-8編碼 |
useBodyEncodingForURI | 是否采用指定的contentType而不是URIEncoding來(lái)編碼URI中的請(qǐng)求參數(shù) |
以下屬性在標(biāo)準(zhǔn)的Connector(NIO, NIO2 和 APR/native)中有效:
表2?5標(biāo)準(zhǔn)的Connector屬性表
屬性 | 說(shuō)明 | 備注 |
acceptCount | 當(dāng)最大請(qǐng)求連接maxConnections滿時(shí)的最大排隊(duì)大小 | 默認(rèn)100,注意此屬性和Executor中屬性maxQueueSize的區(qū)別.這個(gè)指的是請(qǐng)求連接滿時(shí)的堆棧大小,Executor的maxQueueSize指的是處理線程滿時(shí)的堆棧大小 |
connectionTimeout | 請(qǐng)求連接超時(shí) | 默認(rèn)60000ms |
executor | 指定配置的線程池名稱 | |
keepAliveTimeout | keeAlive超時(shí)時(shí)間 | 默認(rèn)值為connectionTimeout配置值.-1表示不超時(shí) |
maxConnections | 最大連接數(shù) | 連接滿時(shí)后續(xù)連接放入最大為acceptCount的隊(duì)列中. 對(duì) NIO和NIO2連接,默認(rèn)值為10000;對(duì) APR/native,默認(rèn)值為8192 |
maxThreads | 如果指定了Executor, 此屬性忽略;否則為Connector創(chuàng)建的內(nèi)部線程池最大值 | 默認(rèn)200 |
minSpareThreads | 如果指定了Executor, 此屬性忽略;否則為Connector創(chuàng)建線程池的最小活躍線程數(shù) | 默認(rèn)10 |
processorCache | 協(xié)議處理器緩存Processor對(duì)象的大小 | -1表示不限制.當(dāng)不使用servlet3.0的異步處理情況下: 如果配置Executor,配置為Executor的maxThreads;否則配置為Connnector的maxThreads. 如果使用Serlvet3.0異步處理, 取maxThreads和maxConnections的最大值 |
1.3.5 Context元素
Context元素表示一個(gè)Web應(yīng)用程序,它在特定的虛擬主機(jī)中運(yùn)行。每個(gè)Web應(yīng)用程序都基于Web應(yīng)用程序存檔(WAR)文件,或者包含相應(yīng)的解包內(nèi)容的相應(yīng)目錄,如Servlet規(guī)范中所述。
屬性 | 說(shuō)明 | 備注 |
altDDName | web.xml部署描述符路徑 | 默認(rèn) /WEB-INF/web.xml |
docBase | Context的Root路徑 | 和Host的appBase相結(jié)合, 可確定web應(yīng)用的實(shí)際目錄 |
failCtxIfServletStartFails | 同Host中的failCtxIfServletStartFails, 只對(duì)當(dāng)前Context有效 | 默認(rèn)為false |
logEffectiveWebXml | 是否日志打印web.xml內(nèi)容(web.xml由默認(rèn)的web.xml和應(yīng)用中的web.xml組成) | 默認(rèn)為false |
path | web應(yīng)用的context path | 如果為根路徑,則配置為空字符串(""), 不能不配置 |
privileged | 是否使用Tomcat提供的manager servlet | |
reloadable | /WEB-INF/classes/ 和/WEB-INF/lib/ 目錄中class文件發(fā)生變化是否自動(dòng)重新加載 | 默認(rèn)為false |
swallowOutput | true情況下, System.out和System.err輸出將被定向到web應(yīng)用日志中 | 默認(rèn)為false |
1.3.6 Engine元素
Engine元素表示與特定的Catalina服務(wù)相關(guān)聯(lián)的整個(gè)請(qǐng)求處理機(jī)器。它接收并處理來(lái)自一個(gè)或多個(gè)連接器的所有請(qǐng)求,并將完成的響應(yīng)返回給連接器,以便最終傳輸回客戶端。
表2?6 Engine元素
屬性 | 描述 | 備注 |
defaultHost | 默認(rèn)主機(jī)名,用于標(biāo)識(shí)將處理指向此服務(wù)器上主機(jī)名稱但未在此配置文件中配置的請(qǐng)求的主機(jī)。 | 這個(gè)名字必須匹配其中一個(gè)嵌套的主機(jī)元素的名字屬性。 |
name | 此引擎的邏輯名稱,用于日志和錯(cuò)誤消息。 | 在同一服務(wù)器中使用多個(gè)服務(wù)元素時(shí),每個(gè)引擎必須分配一個(gè)唯一的名稱。 |
1.3.7 Host元素
Host元素表示一個(gè)虛擬主機(jī),它是一個(gè)服務(wù)器的網(wǎng)絡(luò)名稱(如“www.mycompany.com”)與運(yùn)行Tomcat的特定服務(wù)器的關(guān)聯(lián)。
屬性 | 說(shuō)明 | 備注 |
name | 名稱 | 用于日志輸出 |
appBase | 虛擬主機(jī)對(duì)應(yīng)的應(yīng)用基礎(chǔ)路徑 | 可以是個(gè)絕對(duì)路徑, 或${CATALINA_BASE}相對(duì)路徑 |
xmlBase | 虛擬主機(jī)XML基礎(chǔ)路徑,里面應(yīng)該有Context xml配置文件 | 可以是個(gè)絕對(duì)路徑, 或${CATALINA_BASE}相對(duì)路徑 |
createDirs | 當(dāng)appBase和xmlBase不存在時(shí),是否創(chuàng)建目錄 | 默認(rèn)為true |
autoDeploy | 是否周期性的檢查appBase和xmlBase并deploy web應(yīng)用和context描述符 | 默認(rèn)為true |
deployIgnore | 忽略deploy的正則 | |
deployOnStartup | Tomcat啟動(dòng)時(shí)是否自動(dòng)deploy | 默認(rèn)為true |
failCtxIfServletStartFails | 配置為true情況下,任何load-on-startup>=0的servlet啟動(dòng)失敗,則其對(duì)應(yīng)的Contxt也啟動(dòng)失敗 | 默認(rèn)為false |
1.3.8 Cluster元素
由于在實(shí)際開發(fā)中,我從未用過(guò)Tomcat集群配置,所以沒(méi)研究。
1.4 部署方式
這種方式要求本地必須安裝 Tomcat 。
將打包好的 war 包放在 Tomcat 安裝目錄下的 webapps 目錄下,然后在 bin 目錄下執(zhí)行 startup.bat (windows)或 startup.sh(linux) ,Tomcat 會(huì)自動(dòng)解壓 webapps 目錄下的 war 包。
成功后,可以訪問(wèn) http://公網(wǎng)IP:8080/xxx (xxx 是 war 包文件名)。
總結(jié)
以上步驟是最簡(jiǎn)單的示例。
步驟中的 war 包解壓路徑、啟動(dòng)端口以及一些更多的功能都可以修改配置文件來(lái)定制 (主要是 server.xml或 context.xml 文件)。
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea打包成war包部署到tomcat及訪問(wèn)路徑問(wèn)題(圖文詳解)
這篇文章主要介紹了idea打包war包部署到tomcat以及訪問(wèn)路徑問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Tomcat中指定JDK版本的方法實(shí)現(xiàn)
在Tomcat中指定JDK版本可以通過(guò)設(shè)置環(huán)境變量或修改啟動(dòng)腳本來(lái)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12tomcat啟動(dòng)提示Couldn‘t get host name問(wèn)題
這篇文章主要介紹了tomcat啟動(dòng)提示Couldn‘t get host name問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Tomcat啟動(dòng)springboot項(xiàng)目war包報(bào)錯(cuò):?jiǎn)?dòng)子級(jí)時(shí)出錯(cuò)的問(wèn)題
這篇文章主要介紹了Tomcat啟動(dòng)springboot項(xiàng)目war包報(bào)錯(cuò):?jiǎn)?dòng)子級(jí)時(shí)出錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08如何在IntelliJ IDEA 2018上配置Tomcat并運(yùn)行第一個(gè)JavaWeb項(xiàng)目
這篇文章主要介紹了在IntelliJ IDEA 2018上配置Tomcat并運(yùn)行第一個(gè)JavaWeb項(xiàng)目,需要的朋友可以參考下2020-09-09web安全—tomcat禁用WebDAV或者禁止不需要的 HTTP 方法
現(xiàn)在主流的WEB服務(wù)器一般都支持WebDAV,使用WebDAV的方便性,呵呵,就不用多說(shuō)了吧,用過(guò)VS.NET開發(fā)ASP.Net應(yīng)用的朋友就應(yīng)該 知道,新建/修改WEB項(xiàng)目,其實(shí)就是通過(guò)WebDAV+FrontPage擴(kuò)展做到的,下面我就較詳細(xì)的介紹一下2017-03-03關(guān)于Tomcat的服務(wù)器使用及說(shuō)明
這篇文章主要介紹了關(guān)于Tomcat的服務(wù)器使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06docker安裝Tomcat 404問(wèn)題的解決方案
這篇文章主要介紹了docker安裝Tomcat 404問(wèn)題的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10