一、tomcat的配置文件目錄與目錄下的詳細內容
[root@py conf]# pwd
/usr/local/tomcat/conf
[root@py conf]# ls
Catalina context.xml tomcat-users.xml
catalina.policy logging.properties web.xml
catalina.properties server.xml
1、server.xml詳解
server.xml爲核心配置文件
1.1 server.xml配置文件的層次結構:
<server>
<service>
<connector />
<engine>
<host>
<context></context>
</host>
<host>
<context></context>
</host>
</engine>
</service>
</server>
1.2、server.xml組件類別:
頂級組件:位於整個配置的頂層,如server。
容器類組件:可以包含其它組件的組件,如service、engine、host、context。
連接器組件:連接用戶請求至tomcat,如connector。
被嵌套類組件:位於一個容器當中,不能包含其他組件,如Valve、logger。
1.3、組件詳解:
engine:核心容器組件,catalina引擎,負責通過connector接收用戶請求,
並處理請求,將請求轉至對應的虛擬主機host。
host:類似於httpd中的虛擬主機;一般而言支持基於FQDN的虛擬主機。
context:定義一個應用程序,是一個最內層的容器類組件(不能在嵌套);配置context的主要目的指定對應對的webapp的根目錄,類似於httpd的alias。其還能爲webapp指定額外的屬性,如部署方式等。
connector:接收用戶請求,類似於httpd的listen配置監聽端口的;
service(服務):將connector關聯至engine;因此一個service內部可以有多個connector,但只能有一個引擎engine。參見,server.xml,service內部有兩個connector,一個engine。因此,一般情況下一個server內部只有一個service;一個service內部只有一個engine,但一個service內部可以有多個connector。事實上一個server內部可以有多個service;每個service內部只有一個engine,但一個service內部可以有多個connector。
server:表示一個運行於JVM中的tomcat實例。
Valve:閥門,攔截請求並在將其轉至對應的webapp前進行某種處理操作,可以用於任何容 器中,比如記錄日誌(access log valve)、基於IP做訪問控制(remote address filter valve)。
logger:日誌記錄器,用於記錄組件內部的狀態信息;可以用於除context外的任何容器中。
realm:可以用於任意容器類的組件中,關聯一個用戶認證庫,實現認證和授權。
可以關聯的認證庫有兩種:UserDatabaseRealm、MemoryRealm和JDBCRealm。
UserDatabaseRealm:使用JNDI自定義的用戶認證庫。
MemoryRealm:認證信息定義在tomcat-users.xml中。
JDBCRealm:認證信息定義在數據庫中,並通過JDBC連接至數據庫中查找認證用戶。
1.4、connector種類:
(1) http的connector:
<Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443"/>
(2)AJP(Apache Jserv Protocol)的connector:AJP爲二進制協議,專用於tomcat與apache建立通信的, 在httpd反向代理用戶請求至tomcat時使用(可見Nginx反向代理時不可用AJP協議)。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
1.5、其中的屬性介紹
(1)Connector的屬性說明:
port:監聽的端口,默認爲0
address:指定連接器監聽的地址,默認爲所有地址(即0.0.0.0)
protocol:連接器使用的協議,默認爲http/1.1.定義AJP協議時通常爲AJP/1.3
redirectPort:如果莫連接器支持的協議爲HTTP,當接收客戶端發來的HTTPS請求時,則轉發至此屬性定義的端口。
maxThreads:支持的最大併發連接數,默認爲200,這個在正式服務器需要調整。
connectionTimeout:等待客戶端發送請求的超時時間,單位爲毫秒,默認爲60000,即1分鐘。
enableLookups:是否通過request.getRemoteHost()進行DNS查詢以獲取客戶端主機名,默認爲true,這個影響效率最好關掉。
acceptCount:設置等待隊列的最大長度,通常在tomcat所有處理線程均處於繁忙狀態時,新發來的請求將被放置於此等待隊列中。
(2)host的屬性說明:
name:host的名稱,一般爲name="localhost"。
appBase:應用程序存放路徑,一般爲appBase="webapps" ,相對於CATALINA_HOME而言的,也可以寫絕對路徑。
autoDeploy:在tomcat啓動時,是否自動部署。
unpackWARS:是否自動解壓war文件,一般爲unpackWARS="true"。
xmlValidation:是否啓動xml的校驗功能,一般xmlValidation="false"。
xmlNamespaceAware:檢測名稱空間,一般xmlNamespaceAware="false"。
(3)context的屬性說明:
docBase:相應的Web應用程序的存放位置,也可以使用相對路徑,起始路徑爲此Context所屬Host中appBase定義的路徑。
path:相對於Web服務器根路徑而言的URI,如果爲空,則表示爲此webapp的根路徑。
reloadable:是否允許重新加載此context相關的web應用程序的類,默認爲false
2.web.xml
web.xml爲部署於此tomcat實例上的所有webApp提供默認部署描述符;通常用於爲webapp提供基本的servlet定義和MIME映射表等。
3.context.xml
context.xml:上下文配置文件,爲部署於此tomcat實例上的所有webApp(web應用程序)提供默認配置文件;
context.xml常用於定義會話管理器、JDBC以及Realm等。但每個webApp均可有自己獨有的context.xml,通常放置於每個webApp目錄的META-INF。