作web項目,最經常使用的服務器就是Apache的tomcat。雖然一直在用tomcat,但都是僅限在使用的階段,一直沒有深刻學習過。想深刻學習tomcat,首推的確定是官網:http://tomcat.apache.org/ (雖然全是英文,看起來比較晦澀,但仍是推薦你們在官網學習,一方面權威,另外一方面鍛鍊了本身的英文能力。博主本身英文很差,但仍堅持看官網。)java
開始瞭解一下tomcat的內部結構,博主用的tomcat版本是:apache-tomcat-8.0.3-windows-x86,解壓以後打開,裏面是:web
先看一下除了文件夾之外的其餘文件。數據庫
LICENSE顧名思義就是許可證,裏面記錄了tomcat的一些條款等等。apache
NOTICE裏面記錄了tomcat的新的通知,公告。bootstrap
RELEASE-NOTES這裏面記錄的是發行版本的說明,一些捆綁的API,新特性等等。windows
RUNNING.txt記錄了tomcat的運行環境以及怎樣配置參數,變量,啓動等等。tomcat
================華麗的分割線====================服務器
下面開始介紹文件夾裏面的內容。併發
bin文件夾app
bin文件夾下面放的是可執行性文件,其中:bat/exe文件是windows下可執行的腳本文件。sh文件時Linux/Unix下可執行的腳本文件。其中還有一些jar文件,後面將會說到。
下面是bin文件夾下全部文件:
開始一一介紹。
bootstrap.jar 從文件名能夠看出這個jar包是引導程序jar包,是tomcat的入口。
catalina.bat 這個腳本就比較重要了。這個腳本完成了不少基本操做,如啓動
關閉等,catalina.bat都參與其中。
catalina.sh文件做用同catalina.bat,只不過在Linux/Unix系統下運行。
catalina-tasks.xml 配置文件,主要是引入各類jar包。
commons-daemon-native.tar.gz Linux/Unix下。
configtest.bat 檢測語法是否正確的腳本文件。
cpappend.bat 這個腳本能夠這樣理解,classpath(cp)append就是將指定參數添加到classpath裏面。
digest.bat 博主暫時也沒弄清。
service.bat 啓動tomcat服務。和註冊tomcat服務那塊有關係。
setclasspath.bat 設置classpath的腳本,在catalin.bat腳本中調用,能夠設置java_home,jre_home等。
shutdown.bat 主要是檢查catalina.bat 執行所需環境,並調用catalina.bat 批處理文件關閉tomcat服務。
startup.bat 主要是檢查catalina.bat 執行所需環境,並調用catalina.bat 批處理文件啓動tomcat服務。
tcnative-1.dll 加速器組件,能夠提升性能。(也是在網上搜到的)
tomcat8.exe
tomcat8w.exe
tomcat-juli.jar Apache Tomcat由一個本身的實現了java.util.logging多個關鍵元素的實現。這個實現被稱爲「JULI」。實現的核心組件是定製化的LogManager,能夠獲取運行在Tomcat中的不一樣web應用(以及不一樣的class loader)。他支持爲應用配置單獨的日誌配置。當有web應用從內在中是被卸載時,會接到Tomcat的通知,以便他所引用的類能夠被清除,避免內存泄露。
tomcat-native.tar.gz 裏面放的是tomcat本地的library。
tool-wrapper.bat 工具包裝腳本
version.bat 通常是用來判斷系統版本獲取系統版本信息等。
conf(configurator)文件夾
conf(configurator)文件夾下面放的是配置文件
catalina.policy tomcat策略文件
catalina.properties catalina配置文件
context.xml tomcat公用的環境配置,也能夠在server.xml中配置<context />
logging.properties 日誌配置文件
server.xml 至關重要的配置,端口、線程池等都須要在這裏配置。
元素名 |
屬性 |
解釋 |
server |
port |
指定一個端口,這個端口負責監聽關閉tomcat的請求 |
shutdown |
指定向端口發送的命令字符串 |
|
GlobalNamingResources |
服務器的全局JNDI資源,能夠有子標籤<Resource></Resource> |
|
Executor(線程池,一個或多個Connector能夠共享此線程池) |
name |
線程池名稱,名稱必須惟一 |
namePrefix |
線程的名字前綴,用來標記線程名字的,這樣每一個線程就用這個前綴加上線程編號了,好比 catalina-exec-1 、catalina-exec-2 |
|
maxThreads |
容許的最大線程池裏的線程數量,默認是200,大的併發應該設置的高一些,反正只是限制而已,不佔用資源 |
|
minSpareThreads |
最小的保持活躍的線程數量,默認是25.這個要根據負載狀況自行調整了。過小了就影響反應速度,太大了白白佔用資源 |
|
maxIdleTime |
最小的保持活躍的線程數量,默認是25.這個要根據負載狀況自行調整了。過小了就影響反應速度,太大了白白佔用資源 |
|
threadPriority |
線程的等級。默認是Thread.NORM_PRIORITY |
|
service |
name |
指定service的名字 |
Connector (表示客戶端和service之間的鏈接) |
port |
指定服務器端要建立的端口號,並在這個斷口監聽來自客戶端的請求 |
minProcessors |
服務器啓動時建立的處理請求的線程數 |
|
maxProcessors |
最大能夠建立的處理請求的線程數 |
|
enableLookups |
若是爲true,則能夠經過調用request.getRemoteHost()進行DNS查詢來獲得遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址 |
|
redirectPort |
指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號 |
|
acceptCount |
指定當全部可使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理 |
|
connectionTimeout |
指定超時的時間數(以毫秒爲單位) |
|
Engine (表示指定service中的請求處理機,接收和處理來自Connector的請求) |
name |
|
defaultHost |
指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是同樣的 |
|
jvmRoute |
||
host (表示一個虛擬主機、而且能夠包含Context子節點配置虛擬目錄) |
name |
指定主機名 |
appBase |
應用程序基本目錄,即存放應用程序的目錄 |
|
unpackWARs |
若是爲true,則tomcat會自動將WAR文件解壓,不然不解壓,直接從WAR文件中運行應用程序 |
|
autoDeploy |
自動部署 |
|
xmlValidation |
是否驗證xml |
|
xmlNamespaceAware |
||
Realm (表示存放用戶名,密碼及role的數據庫) |
className |
指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口 |
Context(host子節點配置虛擬目錄) |
path |
虛擬目錄名稱 |
docBase |
物理路徑 |
|
Debug |
Debug模式 |
|
Reload |
True 從新加載,修改後自動加載 |
上面是server.xml元素的含義。基本配置都在這裏了。
tomcat-users.xml tomcat配置用戶的文件。是指定控制檯用戶、角色、密碼的。
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="admin,manager"/>
</tomcat-users>
經過以上配置,能夠爲tomcat添加具備管理員權限的用戶。
web.xml 訪問tomcat入口。配置加載類和資源,如歡迎頁等。
lib文件夾
lib文件夾下面放的是tomcat提供的jar包,資源庫文件。tomcat運行須要。
Log文件夾
log文件夾存放tomcat日誌文件
Temp文件夾
temp文件夾存放臨時文件
webapps文件夾
webapps文件夾是Tomcat發佈web項目的目錄,默認存放了文檔,examples,主機配置等文件。
work文件夾
存放jsp編譯後的class文件。
大致tomcat的結構就是這樣,大部分是經過查資料,把各個文件信息整合到一塊。
轉自:http://my.oschina.net/leamon/blog/209809