tomcat工作原理及目錄文件介紹
1、tomcat背景
自從JSP發佈之後,推出了各式各樣的JSP引擎。Apache Group在完成GNUJSP1.0的開發以後,開始考慮在SUN的JSWDK基礎上開發一個可以直接提供Web服務的JSP服務器,當然同時也支持Servlet, 這樣tomcat就誕生了。tomcat是jakarta項目中的一個重要的子項目,其被JavaWorld雜誌的編輯選爲2001年度最具創新的java產品,同時它又是sun公司官方推薦的servlet和jsp容器,因此其越來越多的受到軟件公司和開發人員的喜愛。servlet和jsp的最新規範都可以在tomcat的新版本中得到實現。其次,tomcat是完全免費的軟件,任何人都可以從互聯網上自由地下載。tomcat與Apache的組合相當完美。
2、tomcat Server處理一個http請求的過程
假設來自客戶的請求爲:http://localhost:8080/wsota/wsota_index.jsp
1、請求被髮送到本機端口8080,被在那裏偵聽的CoyoteHTTP/1.1 Connector獲得
2、Connector把該請求交給它所在的Service的Engine來處理,並等待來自Engine的迴應
3、 Engine獲得請求localhost/wsota/wsota_index.jsp,匹配它所擁有的所有虛擬主機Host
4、Engine匹配到名爲localhost的Host(即使匹配不到也把請求交給該Host處理,因爲該Host被定義爲該Engine的默認主機)
5、 localhost Host獲得請求/wsota/wsota_index.jsp,匹配它所擁有的所有Context
6、Host匹配到路徑爲/wsota的Context(如果匹配不到就把該請求交給路徑名爲""的Context去處理)
7、path="/wsota"的Context獲得請求/wsota_index.jsp,在它的mapping table中尋找對應的servlet
8、Context匹配到URLPATTERN爲*.jsp的servlet,對應於JspServlet類
9、構造HttpServletRequest對象和HttpServletResponse對象,作爲參數調用JspServlet的doGet或doPost方法
10、Context把執行完了之後的HttpServletResponse對象返回給Host
11、Host把HttpServletResponse對象返回給Engine
12、Engine把HttpServletResponse對象返回給Connector
13、Connector把HttpServletResponse對象返回給客戶browser
3、tomcat目錄詳細解析
3.1、bin目錄
bin目錄主要用來存放tomcat的命令,很多環境變量也在此處設置。以.sh結尾的代表Linux下的命令;以.bat結尾的代表Windows下的命令。其中startup.bat代表windows系統下啓動tomcat的命令;shutdown.bat代表Windows系統下關閉tomcat的命令。同理startup.sh代表Linux下的啓動tomcat的命令;shutdown.sh代表linux下關閉tomcat的命令。詳細介紹如下所示。
bin目錄中的腳本說明 | |
文件名稱 | 文件作用 |
catalina.sh | tomcat主要腳本,用於啓動和關閉tomcat服務器 |
startup.sh | 啓動運行tomcat實例,相當於 catalina.sh start |
shutdown.sh | 停止tomcat實例的運行,相當於 catalina.sh stop |
daemon.sh | tomcat服務的啓動腳本,可以複製到/etc/init下使用 |
catalina-tasks.xml | 定義tomcat載入的庫文件,類文件 |
version.sh | 查看當前tomcat的版本信息 |
configtest.sh | 校驗tomcat配置文件server.xml的格式、內容等是否合法、正確 |
setclasspath.sh | catalina.sh依賴這個腳本來設置tomcat的classpath等環境變量 |
digest.sh | 用於生成加密過的tomcat用戶密碼 |
tool-wrapper.sh | 一般和digest腳本結合使用 |
bootstrap.jar | tomcat啓動時所依賴的一個類,在啓動tomcat時會發現Using CLASSPATH: 是加載的這個類 |
commons-daemon.jar | jsvc工具所依賴的java類 |
commons-daemon-native.tar.gz | jsvc工具,可以使tomcat以守護進程方式運行,需單獨編譯安裝 |
tomcat-juli.jar | 是一款在使用tomcat開發時十分關鍵的一款jar包 |
tomcat-native.tar.gz | 使tomcat可以使用apache的apr運行庫,以增強tomcat的性能需單獨編譯安裝 |
3.2、conf目錄
conf目錄主要存放tomcat服務器全局配置的各種文件,詳見以下說明。
conf目錄中配置文件說明 | |
catalina.policy | tomcat 安全機制的配置文件,默認情況下 tomcat 是非安全模式運行的,只有當tomcat用-security命令行參數啓動時這個文件纔會被使用,該文件可以配置tomcat對文件系統中目錄或文件的讀、寫執行等權限,及對一些內存,session等的管理權限 |
catalina.properties | catalina.properties 是 Catalina 的配置文件,主要有安全設置、類加載設置、不需要掃描的類設置、字符緩存設置四大塊。配置tomcat的classpath等 |
context.xml | tomcat的默認context容器,可被所有的web應用程序使用.這個文件默認地可以設置到何處訪問各web應用程序中的web.xml文件。context.xml 在 tomcat 6.0 時從 server.xml 中分離出來,主要用於項目部署的配置。 |
server.xml | tomcat中最重要的配置文件,也是最常用的一個,用於對整個容器進行相關的配置,解析器用這個文件在啓動時根據規範"創建"容器 |
web.xml | tomcat的應用程序的部署描述符文件,是所有Web項目的缺省配置文件。 |
tomcat-users.xml | tomcat的角色(授權用戶)配置文件,用於訪問tomcat管理應用程序時的安全性設置,用server.xml中引用的默認的用戶數據庫域(UserDatabase Realm)使用它,所有的憑據都是默認被註釋的。 |
tomcat-users.xsd | 定義了 tomcat-users.xml 所使用到的標籤 |
logging.properties | tomcat 的日誌配置文件,用於配置tomcat的日誌輸出方式和日誌級別。 |
jaspic-providers.xml | tomcat 實現了 JASPIC 1.1 Maintenance Release B 標準,並通過這個配置文件集成第三方 JASPIC 身份驗證 |
jaspic-providers.xsd | 定義了 jaspic-providers.xml 所使用到的標籤 |
3.3、lib目錄
lib目錄下主要存放tomcat服務器所需要的所有Jar包。我們在連接數據庫時常常煩惱每創建一個項目就要引入一個對應的oracle的Jar包或MySQL的Jar。但是如果你把這兩個Jar包放在此目錄下,就可以引入一次,以後再創建項目時不需要每次都引入Jar包。
3.4、logs目錄
logs目錄用來存放tomcat在運行過程中產生的日誌文件,非常重要的是在控制檯輸出的日誌。(清空不會對tomcat運行帶來影響) 在windows環境中,控制檯的輸出日誌在catalina.xxxx-xx-xx.log文件中。在linux環境中,控制檯的輸出日誌在catalina.out文件中
3.5、temp目錄
temp 文件夾用於存放 tomcat 在運行過程中產生的 臨時文件。temp 文件夾可以被清空,但是不能隨意刪除,否則會有未知錯誤發生。
3.6、webapps目錄
webapps目錄是tomcat默認存放應用程序的目錄,好比apache的默認網頁存放路徑是/var/www/html一樣,當tomcat啓動時會去加載webapps目錄下的應用程序。可以以文件夾、war包、jar包的形式發佈應用。當然,你也可以把應用程序放置在磁盤的任意位置,在配置文件中映射好就行。該目錄中介紹如下
webapps目錄介紹 | ||
docs | tomcat文檔存放目錄 | |
examples | tomcat自帶的一個獨立的web應用程序例子存放位置 | |
host-manager tomcat的主機管理應用程序存放位置 | host-manager目錄中文件介紹 | |
META-INF | 整個應用程序的入口,用來描述jar文件的信息 | |
context.xml | 當前應用程序的context容器配置,它會覆蓋tomcat/conf/context.xml中的配置 | |
WEB-INF | 用於存放當前應用程序的私有資源 | |
images | 存放應用程序相關圖片文件 | |
index.jsp | 應用程序的網頁文件 | |
manager.xml | 應用程序的管理配置文件 | |
manager | tomcat的管理應用程序 | |
ROOT | 指tomcat的應用程序的根,如果應用程序部署在ROOT中,則可直接通過http://ip:port 訪問到 |
3.7、work目錄
work目錄用於存放JSP應用程序在部署時編譯後產生的class文件,清空work目錄,然後重啓tomcat,可以達到清除緩存的作用。
3.8、LICENSE 文件
LICENSE 文件是tomcat 開源許可證文件。
3.9、NOTICE 文件
NOTICE 文件是tomcat 說明文件。
3.10、RELEASE-NOTES 文件
RELEASE-NOTES 文件是tomcat 版本說明文件。
3.11、RUNNING.txt 文件
RUNNING.txt 文件是tomcat 幫助文件(使用指南)。
4、catalina.sh | catalina.bat腳本文件使用方法
語法格式:catalina.sh 選項
例如:catalina.sh start #啓動tomcat
catalina.sh腳本可用選項如下:
catalina.sh腳本選項及說明 | |
選項名稱 | 選項作用 |
debug | 以debug模式啓動 |
debug -security | 啓用catalina.policy文件 |
jpda start | 以jpda(Java Platform Debugger Architecture)調試器的模式啓動 |
run | 即使是在linux上,也不會將輸出重定向到日誌文件,就像和windows上(那個一直開着的黑窗口)一樣的效果 |
start | 啓動tomcat |
stop n | 停止tomcat,最多有n秒的延遲來處理釋放資源等的操作 |
stop | 相當於 stop 5 |
stop n -force | 停止tomcat,最多n秒延遲,n秒之後會強制kill掉tomcat |
stop -force | 相當於 stop 5 --force |
configtest | 檢測配置文件${catalina.home}/conf/server.xml語法 |
version | tomcat版本信息 |
5、tomcat環境變量說明
tomcat環境變量說明 | |
環境變量名稱 | 環境變量說明 |
CATALINA_HOME | tomcat安裝目錄 |
CATALINA_OPTS | 一般是傳遞JVM參數使用的,比如-Xmx256M |
CATALINA_TMPDIR | tomcat臨時文件目錄 |
JAVA_HOME | JDK安裝目錄 |
JRE_HOME | JRE安裝路徑 |
JAVA_OPTS | 傳遞JVM參數使用的,比如-Xmx256M |
JPDA_TRANSPORT | JPDA調試器使用的傳輸協議 |
JPDA_ADDRESS | 制定和catalina.sh jpda start 一起使用的jpda地址 |
JSSE_HOME | 指定用於https使用的Java Secure SocketsExtension的位置 |
CATALINA_PID | 進程描述符位置 |