本文參考自:Tomcat全攻略
參考鏈接:http://www.ibm.com/developerworks/cn/java/l-tomcat/index.html#1
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,目前最新版本是6.x,相對5.x性能提升很多,主要優化了內存使用,增強IO能力,重新構造集群功能。
近期對Tomcat6.x作深入學習,參考上述聲明的Tomcat全攻略,由于筆者是2001年針對Tomcat4.x所寫,故參考之并針對Tomcat6.x做了總結,形成此篇學習筆記,希望對學習的人有所幫助,本文涵蓋了:Tomcat目錄、Server.xml元素講解,數據庫連接池配置、線程池配置、虛擬目錄配置。關于如何下載、安裝、運行Tomcat略,請google,相信有詳細的文章講述。
tomcat的目錄結構如下:
目錄名
|
簡介
|
bin
|
存放啟動和關閉tomcat腳本
|
conf
|
包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml
|
work
|
存放jsp編譯后產生的class文件
|
webapp
|
存放應用程序示例,以后你要部署的應用程序也要放到此目錄
|
logs
|
存放日志文件
|
lib
|
這三個目錄主要存放tomcat所需的jar文件
|
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數據庫連接池配置如下:
server.xml配置Resource
<Resource name="jdbc/ExampleDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="APP" password="APP" driverClassName="org.apache.derby.jdbc.ClientDriver"
url="jdbc:derby://localhost:1527/springside-example;create=true"/>
context.xml文件增加:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<ResourceLink name="jdbc/ExampleDB" global="jdbc/ExampleDB" type="javax.sql.DataSource"/>
Tomcat共享線程池配置:
取消Executor注釋,修改連接數至自己合適的數值既可。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="200" minSpareThreads="100" maxIdleTime="60000"/>
executor="tomcatThreadPool" 標明此連接使用上面配置的名稱為tomcatThreadPool的連接池,無屬性共享連接不會生效 protocol表示使用的是 http協議 端口號為8080
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"
connectionTimeout="20000"
executor="tomcatThreadPool"
acceptCount="100"
useBodyEncodingForURI="true"
enableLookups="false"
/>
虛擬目錄配置:
在<host></host>之間增加如下
<!-- 配置虛擬目錄,例如:http://localhost:8080 -->
<Context path="/" docBase="D:\workspace\code\HBJH\web"></Context>
附件中是取自springside3中,Tomcat production config配置示例,即生產環境下Tomcat配置