Tomcat6.x目錄與server.xml詳解
本文參考自: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配置
posted on 2011-05-10 21:04 空白 閱讀(862) 評論(0) 編輯 收藏 所屬分類: Java