1. 程式人生 > 實用技巧 >tomcat server.xml配置屬性

tomcat server.xml配置屬性

Engine配置屬性

屬性 描述 預設值
backgroundProcessorDelay

當前Engine及其子容器backgroundProcessor方法執行的延遲時間,包括所有Host和Context,單位s。

如果子容器屬性backgroundProcessorDelay的取值為非負數,將不執行。

屬性為正數時,tomcat將會建立一個後臺執行緒,等待執行時間後,該執行緒將執行當前Engine及其所有子容器的backgroundProcessorDelay方法

10
className 例項化Engine時使用的類名。指定類必須實現org.apache.catalina.Engine介面。不指定則使用org.apache.catalina.core.StandardEngine
defaultHost 預設Host名稱,當根據請求無法找到host時,使用預設Host處理
jvmRoute 用於在負載均衡場景下啟用粘性會話,該標識在整個叢集所有tomcat中唯一,而且會附加到生成的會話識別符號。通過此值,前端代理可以將某個會話定向到同一個Tomcat例項
name Engine的邏輯名稱。當同一個server中存在多個service時,engine名必須唯一
startStopThreads

Engine用於啟動Host的執行緒數。如果設定為0,將使用Runtime.getRuntime().availableProcessors()的值。

如果設定為負值,則使用Runtime.getRuntime().availableProcessors()+startStopThreads,如果設定結果小於1,取值為1

1

Host配置屬性

屬性 描述 預設值
appBase 當前Host的基礎目錄,即web應用的目錄路徑。可以是絕對路徑,也可以是相對路徑(相對$CATALINA_BASE) webapps
xmlBase

當前Host的XML基礎目錄,即Host上的Context描述檔案的路徑。可以是絕對路徑,也可以是相對路徑(相對$CATALINA_BASE)

預設為conf/<Engine名稱>/<Host名稱>

createDirs 如果設定為true,Tomcat將在啟動階段嘗試建立appBase和xmlBase設定的目錄,如果建立失敗,會列印錯誤資訊,但不會終止啟動 true
autoDeploy 用於設定tomcat是否在執行時定期檢查新增或存在更新的web應用。如果為true,tomcat定期檢測appBase和xmlBase目錄,部署發現的新的web應用或Context檔案。存在更新的web應用或者Context檔案將處罰web應用重新載入 true
backgroundProcessorDelay

當前Host及其子容器backgroundProcess()方法執行的延遲時間,包括所有Context,單位s。

如果子容器屬性backgroundProcessorDelay的取值為非負數,將不執行。

屬性為正數時,tomcat將會建立一個後臺執行緒,等待執行時間後,該執行緒將執行當前Host及其所有子容器的backgroundProcessorDelay方法

-1
className 例項化Host是,使用的實現類類名。指定類必須實現org.apache.catalina.Host介面
deployIgnore

用於確定tomcat自動部署以及啟動部署時忽略目錄的正則表示式。通過此配置,可以將tomcat配置納入版本控制系統

例如,部署時忽略appBase下的.svn或者CVS目錄。該正則表示式相對於appBase目錄,並且匹配整個檔案或目錄名。例如,foo匹配檔名為foo的檔案或目錄,但不匹配foo.war,foobar等

deployOnStartup 用於標識當Tomcat啟動時,是否自動部署Host下的web應用 true
name 當前Host的網路名稱。Tomcat會自將Host名轉換為小寫。
startStopThreads

Host用於啟動Context的執行緒數。如果設定為0,將使用Runtime.getRuntime().availableProcessors()的值。

如果設定為負值,則使用Runtime.getRuntime().availableProcessors()+startStopThreads,如果設定結果小於1,取值為1

1
undeployOldVersions 用於確定Tomcat在自動部署過程中是否檢查web應用的舊版本。如果發現舊版本,則移除。當autoDeploy為true時使用 false
copyXML

設定為true,在web應用部署是,tomcat會將內嵌在應用中的Context描述檔案(/META-INF/context.xml)複製到xmlBase目錄下。以後再啟動時,優先使用複製的Context檔案,即使web應用中的描述檔案更新。

如果deployXML為false,那麼該屬性不生效

deployXML

設定為false,Tomcat不會轉換web應用內嵌的Context檔案(/META-INF/context.xml)。在安全環境下需要設定為false,以避免web應用影響容器配置、 false
errorReportValueClass
unpackWARs 設定為true,Context在啟動時會將appBase目錄下的WAR包解壓。設定為false,將直接從WAR檔案中啟動web應用。Host的appBase目錄外的WAR檔案不會解壓 true
workDir

當前Host下web應用使用的臨時目錄。每個應用擁有自己的子目錄用於臨時讀寫。如果設定了Context的workDir屬性,Host的配置將被覆蓋。

如果不指定,每個web應用將使用$CATALINA_BASE/work/{Engine名稱}/{Host名稱}/{Context名稱}

Context配置

屬性 描述 預設值
allowCasualMultipartParsing 如果設定為true,Tomcat在web應用呼叫HttpServletRequest.getPart *或HttpServletRequest.getParameter *時自動轉換multipart / form-data請求,即使目標servlet沒有被@MultipartConfig註釋 false
backgroundProcessorDelay

當前Context及其子容器(包括wrapper)後臺執行緒執行的延遲時間,單位秒。執行是,將忽略延遲時間為正數的子元件

將此值設定為正值將導致產生執行緒。等待指定的時間後,執行緒將在此主機及其所有子容器上呼叫backgroundProcess方法

則此屬性的預設值為-1,這意味著上下文將依賴於其父主機的後臺處理執行緒。

-1
className 例項化Context時,使用的類。此類必須實現org.apache.catalina.Context介面
containerSciFilter 使用正則表示式過濾當前contexttigong de ServletContainerInitializer類,使之不能用於當前Context
cookies 是否要將cookie用於快取當前Context的會話標識,false為不快取 true
crossContext 設定為true,返回同Host下指定名稱的其他Context。設定為false,該方法始終返回為空。預設false,避免將請求分發給其他Context,做到安全防護
false
docBase

web應用程式Document Base(也稱為Context Root)目錄,或Web應用程式存檔檔案的路徑名

除非在server.xml中定義了Context元素,或者web應用的部署路徑不再Host的docBase目錄下,不必設定該屬性

dispatchersUseEncodedPaths 控制是否期望對用於獲取請求分配器的呼叫中的路徑進行編碼。這不僅影響Tomcat處理呼叫以獲取請求分配器的方式,還影響Tomcat內部生成用於獲取請求分配器的路徑的方式。如果未指定,true則使用預設值為請求分配器編碼/解碼路徑時,始終使用UTF-8。 true
failCtxIfServletStartFails

設定為:true如果任何load-on-startup> = 0的servlet自身失敗,則上下文啟動失敗。

如果未指定,則使用父主機配置中相同名稱的屬性(如果指定)。否則,將使用預設值false

false
fireRequestListenersOnForwards 設定為true在Tomcat轉發請求時觸發所有已配置的ServletRequestListeners。這主要供使用ServletRequestListeners為請求配置必要環境的CDI框架的使用者使用。如果未指定,false則使用預設值 false
logEffectiveWebXml 設定為true是否要在應用程式啟動時記錄用於Web應用程式的有效web.xml(在INFO級別)。有效的web.xml是將應用程式的web.xml與Tomcat配置的任何預設值以及發現的任何web-fragment.xml檔案和註釋結合在一起的結果。如果未指定,false則使用預設值 false
mapperContextRootRedirectEnabled 如果啟用,則對Web應用程式上下文根的請求將在必要時由Mapper而不是預設Servlet重定向(新增斜槓)。這更有效,但具有確認上下文路徑存在的副作用。如果未指定,true則使用預設值 false
override 設定為true忽略全域性或主機預設上下文中的任何設定預設情況下,將使用來自預設上下文的設定,但可以通過為上下文顯式設定相同的屬性來覆蓋這些設定。 false
path

此Web應用程式上下文路徑與每個請求URI的開頭匹配,以選擇適當的Web應用程式進行處理。特定主機內的所有上下文路徑必須唯一。如果您指定一個空字串(“”)的上下文路徑,那麼您正在為此主機定義預設的Web應用程式,它將處理所有未分配給其他上下文的請求。

僅當在server.xml中靜態定義上下文時,才必須使用此屬性。在所有其他情況下,將從用於.xml上下文檔案或docBase的檔名中推斷出路徑。

即使在server.xml中靜態定義Context時,也不能設定此屬性,除非docBase不在Host的下面appBase或兩者都位於deployOnStartup並且autoDeploy為false。如果不遵循此規則,則可能導致雙重部署。

preemptiveAuthentication 當設定為true且使用者提供不受安全約束保護的資源的憑據時,如果身份驗證器支援搶佔式身份驗證(Tomcat附帶的標準身份驗證器則支援),則將處理使用者的憑據。如果未指定,false則使用預設值 false
privileged 設定為true允許此上下文使用容器servlet,例如管理器servlet。使用該privileged屬性會將上下文的父類載入器更改為伺服器類載入器,而不是共享類載入器。請注意,在預設安裝中,“公共”類載入器用於“伺服器”和“共享”類載入器。 false
reloadable 設定為true,如果你想卡塔利娜監測類/WEB-INF/classes//WEB-INF/lib更改,並自動如果檢測到變化重新載入Web應用程式。此功能在應用程式開發期間非常有用,但是它需要大量的執行時開銷,因此不建議在已部署的生產應用程式上使用。這就是為什麼此屬性的預設設定為false的原因但是,您可以使用ManagerWeb應用程式來觸發按需重新載入已部署的應用程式。 false
resourceOnlyServlets
sendRedirectBody 如果為true,則重定向響應將包括一個簡短的響應主體,該主體包含RFC 2616建議的重定向詳細資訊。由於包括響應主體可能會對某些應用程式元件(例如壓縮過濾器)造成問題,因此預設情況下將其禁用。 false
sessionCookieDomain 用於為此上下文建立的所有會話cookie的域。如果設定,則它將覆蓋Web應用程式設定的任何域。如果未設定,則將使用Web應用程式指定的值(如果有)。
sessionCookieName

用於為此上下文建立的所有會話cookie的名稱。如果設定,它將覆蓋Web應用程式設定的任何名稱。如果未設定,則將使用Web應用程式指定的值(如果有),JSESSIONID如果Web應用程式未明確設定一個,則使用名稱

sessionCookiePath

用於為此上下文建立的所有會話cookie的路徑。如果設定,它將覆蓋Web應用程式設定的任何路徑。如果未設定,則將使用由Web應用程式指定的值,如果Web應用程式未顯式設定一個,則將使用上下文路徑。要將所有Web應用程式配置為使用空路徑(這對於Portlet規範實現很有用),請/在全域性CATALINA_BASE/conf/context.xml檔案中將此屬性設定為

注意:使用的一個Web應用程式sessionCookiePath="/"獲得會話後,同一主機中也配置了該會話的其他Web應用程式的所有後續會話sessionCookiePath="/"將始終使用相同的會話ID。即使會話無效並建立了一個新會話,該設定仍然成立。這使得會話固定保護更加困難,並且需要定製的特定於Tomcat的程式碼來更改多個應用程式共享的會話ID

true
sessionCookiePathUsesTrailingSlash true
swallowAbortedUploads

設定為false如果Tomcat應該閱讀中止上傳,而是中止客戶端連線任何額外要求的身體資料。在以下情況下使用此設定:

  • 請求主體的大小大於maxPostSize聯結器中配置的大小
  • 已達到MultiPart上傳的大小限制
  • Servlet將響應狀態設定為413(請求實體太大)

不讀取其他資料將更快地釋放請求處理執行緒。不幸的是,如果大多數HTTP客戶端無法編寫完整的請求,它們將不會讀取響應。

預設值為true,因此將讀取其他資料。

請注意,如果在觸發5xx響應的請求處理過程中發生錯誤,則寫入錯誤響應後,所有未讀的請求資料將始終被忽略,並且客戶端連線將被關閉。

false
tldValidation 如果此標誌的值為true,則在上下文啟動時將對TLD檔案進行XML驗證。如果org.apache.catalina.STRICT_SERVLET_COMPLIANCEsystem屬性設定為true,則此屬性true的預設值為,否則預設值為false將此屬性設定為true會導致效能下降。
useHttpOnly 是否應在會話cookie上設定HttpOnly標誌,以防止客戶端指令碼訪問會話ID?預設為true true
useRelativeRedirects 控制通過呼叫生成的HTTP 1.1和更高版本的位置標頭javax.servlet.http.HttpServletResponse#sendRedirect(String)將使用相對還是絕對重定向。相對重定向更有效,但可能不適用於更改上下文路徑的反向代理。應該注意的是,由於它產生了多個問題,因此不建議使用反向代理來更改上下文路徑。絕對重定向應與更改上下文路徑的反向代理一起使用,但是org.apache.catalina.filters.RemoteIpFilter如果過濾器正在更改方案和/或埠可能導致問題如果org.apache.catalina.STRICT_SERVLET_COMPLIANCEsystem屬性設定為true,則此屬性false的預設值為,否則預設值為true
validateClientProvidedNewSessionId 當客戶端為新會話提供ID時,此屬性控制該ID是否得到驗證。使用客戶端提供的會話ID的唯一用例是在多個Web應用程式之間具有通用的會話ID。因此,任何客戶端提供的會話ID應該已經存在於另一個Web應用程式中。如果啟用此檢查,則僅當會話ID存在於當前主機的至少一個其他Web應用程式中時,才使用客戶端提供的會話ID。請注意,無論此設定如何,都將始終執行以下附加測試:
  • 會話ID由Cookie提供
  • 會話Cookie的路徑為{@code /}

如果未指定,true將使用預設值

true
wrapperClass org.apache.catalina.Wrapper將用於此Context管理的servlet實現類的Java類名稱如果未指定,將使用標準預設值。
xmlBlockExternal 如果該標誌的值是true,在解析的web.xmlweb-fragment.xmltomcat-web.xml*.tld*.jspx*.tagxtagPlugins.xml此Web應用程式的檔案將不會允許裝載外部實體。如果未指定,true將使用預設值 true
xmlNamespaceAware 如果這個標誌的值為true,的解析web.xmlweb-fragment.xml並且tomcat-web.xml檔案此Web應用程式會識別名稱空間。請注意*.tld*.jspx*.tagx始終使用可識別名稱空間的解析器來解析檔案並且tagPlugins.xml永遠不會使用可識別名稱空間的解析器來解析檔案(如果有)。還要注意,如果開啟此標誌,則可能也應該開啟xmlValidation如果org.apache.catalina.STRICT_SERVLET_COMPLIANCEsystem屬性設定為true,則此屬性true的預設值為,否則預設值為false將此屬性設定為true會導致效能下降。
xmlValidation 如果這個標誌的值為true,的解析web.xmlweb-fragment.xml並且tomcat-web.xml檔案此Web應用程式將使用驗證解析器。如果org.apache.catalina.STRICT_SERVLET_COMPLIANCEsystem屬性設定為true,則此屬性true的預設值為,否則預設值為false將此屬性設定為true會導致效能下降。

如果該標誌的值是true,在解析的web.xmlweb-fragment.xmltomcat-web.xml*.tld*.jspx*.tagxtagPlugins.xml此Web應用程式的檔案將不會允許裝載外部實體。如果未指定,true將使用預設值