從零開始深入學習Tomcat
1:Tomcat工作原理
2:Tomcat工作模式
(1):獨立的Servlet容器(預設)(2)程序內的Servlet容器(基於JNI)(3)程序外的Servlet容器(基於IPC)
JNI:Java Native Interface,本地通訊介面,通過這個介面,Java 程式可以和其他語言編寫的本地程式進行通訊。
IPC:Inter Process Communication,程序間通訊
Tomcat既可以作為獨立的容器,又可以和其他Web伺服器整合(例如IIS,Apache)作為程序內、程序間Servlet容器
Servlet容器分為:
1.Web伺服器外掛:在其他的WEB伺服器內部地址空間開啟一個JVM,Java容器在這個開闢的JVM上執行Servlet
2.Java容器
3:Tomcat組織結構
最基本的配置:
<Server>頂層類元素,可包含多個 Service <Service>頂層類元素,可包含一個 Engine 和多個 Connector,本身並不能處理客戶請求 <Connector/>聯結器元素,代表通訊介面,本身並不能處理客戶請求 <Engine>容器元素,為 Service 處理客戶請求,可包含多個 Host <Host>容器元素,為 Host 處理客戶請求,可包含多個 Context <Context/>容器元素,為 Web 應用處理客戶請求 </Host> </Engine> </Service></Server>
Connector 組件表示一個接口,通過這個接口接收客戶的請求,然後發送給其他的容器組件,最後再把服務器的響應結果傳遞給客戶。
容器類元素上面介紹的 3 個元件:server,service,connector本身並不能處理客戶請求,也不能生成響應。在 Tomcat 中只有 3 個元件是可以處理客戶請求並生成響應的,這 3 個元件分別是 Engine、Host 和 Context。這 3 個元件分別代表了不同的服務範圍,通過巢狀關係可以知道 3 個元件的範圍有如下的關 系:Engine>Host>Context。
Engine 元件下可以包含多個 Host 元件,它為特定的 Service 元件處理所有客戶請求。
一個 Host 元件代表一個虛擬主機,一個虛擬主機中可以包含多個 Web 應用(Context 元件)。
Context 元件代表一個 Web 應用。
WEB伺服器種類:
Java Web 服務器軟件按照規模從小到大依次有:JSWDK、JServ、Resin、Tomcat、JRun、JBoss、WebLogic、WebSphere 等,其中 JSWDK、JServ、Resin、Tomcat、JRun、JBoss 是完全免費的軟件。
4:JVM效能設定
堆大小
堆大小也可以提高效能,JDK1.3.1 允許堆大小大於 2GB,預設堆大小為 64MB,但是 大部分的伺服器增加堆大小後效能會提高,設定引數為-Xms256m -Xmx256m,Xms 代表最 大大小,Xmx 代表預設啟動大小,m 代表 MB,g 代表 GB。
垃圾回收
如果堆設定過大,也許伺服器會在無端的情況下奇怪終止。這是因為垃圾回收器(GC, garbage collector)僅僅在記憶體被耗盡後在整個系統中啟動垃圾回收任務,也意味著需要花 費一定的時間來檢查 2G 以上的記憶體。如果堆過大,掃描記憶體的時間過長,就會導致系統 終止。不過有辦法可以解決,新增命令引數-Xincgc,使垃圾回收器執行在 incremental 模式, 它會經常執行檢查小數量的記憶體。還有一種解決辦法,設定引數-Xms256m -Xmx256m -XX:NewSize=128m -XX:MaxNewSize=128m,NewSize 是新建物件的大小,MaxNewSize 是新建堆執行增長的最大值,它決定了何時將新的物件置為舊的物件。
5:Tomcat目錄
Tomcat 根目錄在 Tomcat 中叫$CATALINA_HOME ,即安裝目錄。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="/aa" reloadable="true"docBase="D:\bb\aa" workDir="webapps/axis/work"/>
</Host>其中屬性 path 代表網路訪問的上下文路 徑,reloadable 表示可以在執行時在 classes 與 lib 資料夾下自動載入類包,docBase 屬性表 示應用程式的路徑,如 docBase="D:\bb\aa",workDir 表示快取檔案的放置地點,可以方 便跨平臺移植時不用重編譯。
用 service.bat 安裝 Tomcat 服務
service.bat 位於 Tomcat 安裝目錄的 bin 檔案夾下,用該批處理檔案來安裝、刪除 Tomcat服務比較方便:下載時要下載
安裝名為 Tomcat5 的服務:service install;
刪除 Tomcat5 服務:service remove;
安裝名為 MyTomcatService 的服務:service install MyTomcatService;刪除名為 MyTomcatService 的服務:service remove MyTomcatService。