- 什么是Tomcat
Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun提供的技術規范,實現了對Servlet和JavaServer Page(JSP)的支持。由於Tomcat本身也內含了一個HTTP服務器,它也可以被視作一個單獨的Web服務器。
2. Tomcat架構與術語
上圖是Tomcat架構圖,其中的術語解釋如下
- Server: Server代表整個Servlet容器,是Tomcat的頂級元素,可以包含一個或多個services元素。
- Service: Service代表了一個或多個Connector元素,這些Connector共享一個Engine元素。
- Connector:Connector用來處理與客戶端的通信,接受請求並返回結果。包含HTTP connector和AJP connector。
- Engine:Engine用來接收並處理從Connector發來的請求,並將處理結果返回Connector。一個Engine可以包含一個或多個Host。
- Host:Host代表一個虛擬主機,每個Host可以包含一個或多個Web應用。
- Context:Context代表了一個web應用,每個web應用基於一個war文件。
<Server> <Listener /> <GlobaNamingResources> </GlobaNamingResources <Service> <Connector /> <Engine> <Logger /> <Realm /> <host> <Logger /> <Context /> </host> </Engine> </Service> </Server>
上圖為server.xml的結構,從中可以看出tomcat架構的層次關系
3. Tomcat 目錄結構
|-- bin
| |-- bootstrap.jar tomcat啟動時所依賴的一個類,在啟動tomcat時會發現Using CLASSPATH: 是加載的這個類
| |-- catalina-tasks.xml 定義tomcat載入的庫文件,類文件
| |-- catalina.bat
| |-- catalina.sh tomcat單個實例在Linux平台上的啟動腳本
| |-- commons-daemon-native.tar.gz jsvc工具,可以使tomcat已守護進程方式運行,需單獨編譯安裝
| |-- commons-daemon.jar jsvc工具所依賴的java類
| |-- configtest.bat
| |-- configtest.sh tomcat檢查配置文件語法是否正確的Linux平台腳本
| |-- cpappend.bat
| |-- daemon.sh tomcat已守護進程方式運行時的,啟動,停止腳本
| |-- digest.bat
| |-- digest.sh
| |-- setclasspath.bat
| |-- setclasspath.sh
| |-- shutdown.bat
| |-- shutdown.sh tomcat服務在Linux平台下關閉腳本
| |-- startup.bat
| |-- startup.sh tomcat服務在Linux平台下啟動腳本
| |-- tomcat-juli.jar
| |-- tomcat-native.tar.gz 使tomcat可以使用apache的apr運行庫,以增強tomcat的性能需單獨編譯安裝
| |-- tool-wrapper.bat
| |-- tool-wrapper.sh
| |-- version.bat
| |-- version.sh 查看tomcat以及JVM的版本信息
|-- conf 顧名思義,配置文件目錄
| |-- catalina.policy 配置tomcat對文件系統中目錄或文件的讀、寫執行等權限,及對一些內存,session等的管理權限
| |-- catalina.properties 配置tomcat的classpath等
| |-- context.xml tomcat的默認context容器
| |-- logging.properties 配置tomcat的日志輸出方式
| |-- server.xml tomcat的主配置文件
| |-- tomcat-users.xml tomcat的角色(授權用戶)配置文件
| |-- web.xml tomcat的應用程序的部署描述符文件
|-- lib tomcat需要使用的java庫文件
|-- logs 日志文件默認存放目錄
|-- temp
|-- webapps tomcat默認存放應用程序的目錄,好比apache的默認網頁存放路徑是/var/www/html一樣
| |-- docs tomcat文檔
| |-- examples tomcat自帶的一個獨立的web應用程序例子
| |-- host-manager tomcat的主機管理應用程序
| | |-- META-INF 整個應用程序的入口,用來描述jar文件的信息
| | | -- context.xml 當前應用程序的context容器配置,它會覆蓋tomcat/conf/context.xml中的配置
| | |-- WEB-INF 用於存放當前應用程序的私有資源
| | | |-- classes 用於存放當前應用程序所需要的class文件
| | | |-- lib 用於存放當前應用程序鎖需要的jar文件
| | | -- web.xml 當前應用程序的部署描述符文件,定義應用程序所要加載的serverlet類,以及該程序是如何部署的
| |-- manager tomcat的管理應用程序
| |-- ROOT 指tomcat的應用程序的根,如果應用程序部署在ROOT中,則可直接通過http://ip:port 訪問到
|-- work 用於存放JSP應用程序在部署時編譯后產生的class文件