ClusterManager 物件

目錄

簡介

叢集管理員是 Tomcat 會話管理員介面的延伸,org.apache.catalina.Manager。叢集管理員必須實作 org.apache.catalina.ha.ClusterManager,並完全負責會話的複製方式。
目前有兩個不同的管理員,org.apache.catalina.ha.session.DeltaManager 會將會話資料的增量複製到叢集中的所有成員。此實作經過驗證且運作良好,但有一個限制,因為它要求叢集成員是同質的,所有節點都必須部署相同的應用程式,並且是完全的複製品。org.apache.catalina.ha.session.BackupManager 也會複製增量,但只會複製到一個備份節點。叢集中的所有節點都知道備份節點的位置。它也支援異質部署,因此管理員知道 Web 應用程式部署在哪些位置。

<Manager>

<Cluster> 元素內定義的 <Manager> 元素是為所有在 web.xml 檔案中標記為 <distributable/> 的 Web 應用程式定義的範本。不過,您仍可以在每個 Web 應用程式基礎上覆寫管理員實作,方法是在 <Context> 元素內放置 <Manager>,無論是在 context.xml 檔案或 server.xml 檔案中。

屬性

共用屬性

屬性 說明
className
name 此叢集管理員的名稱,此名稱用於識別節點上的工作階段管理員。名稱可能會被 Cluster 元素修改,以使其在容器中具有唯一性。
notifyListenersOnReplication 如果您希望在叢集中的 Tomcat 節點間複製或移除工作階段屬性時通知工作階段偵聽器,請設定為 true
processExpiresFrequency

工作階段到期頻率,以及相關的管理員操作。管理員操作將針對指定的背景處理呼叫次數執行一次(亦即,次數越少,檢查發生的頻率越高)。最小值為 1,預設值為 6。

secureRandomClass

延伸 java.security.SecureRandom 的 Java 類別名稱,用於產生工作階段 ID。如果未指定,預設值為 java.security.SecureRandom

secureRandomProvider

用於建立產生工作階段 ID 的 java.security.SecureRandom 實例的提供者名稱。如果指定無效的演算法和/或提供者,Manager 將使用平台預設提供者和預設演算法。如果未指定,將使用平台預設提供者。

secureRandomAlgorithm

用於建立產生工作階段 ID 的 java.security.SecureRandom 實例的演算法名稱。如果指定無效的演算法和/或提供者,Manager 將使用平台預設提供者和預設演算法。如果未指定,將使用 SHA1PRNG 的預設演算法。如果預設演算法不受支援,將使用平台預設。若要指定應使用平台預設,請勿設定 secureRandomProvider 屬性,並將此屬性設定為空字串。

recordAllActions

旗標,表示是否傳送 Tomcat 叢集節點間所有工作階段動作。如果設定為 false,如果已對相同屬性執行某些動作,請確定不要在 Tomcat 叢集節點間傳送多個動作。在這種情況下,只傳送最後新增的動作。預設為 false

org.apache.catalina.ha.session.DeltaManager 屬性

屬性 說明
expireSessionsOnShutdown 當網頁應用程式正在關閉時,Tomcat 會對每個工作階段發出過期呼叫,以通知所有監聽器。如果您希望在一個節點上發生關閉時,所有節點上的工作階段都過期,請將此值設為 true。預設值為 false
maxActiveSessions 此管理員建立的最大工作階段數,或 -1(預設值)表示沒有限制。對於此管理員,所有工作階段都算作工作階段,無論目前的節點是否為工作階段的主要節點。
notifySessionListenersOnReplication 如果您希望在叢集中的 Tomcat 節點之間建立和過期工作階段時,通知工作階段監聽器,請設為 true
notifyContainerListenersOnReplication 如果您希望在叢集中的 Tomcat 節點之間通知容器監聽器,請設為 true
stateTransferTimeout 當節點啟動時,等待從另一個節點完成工作階段狀態傳輸的時間(以秒為單位)。預設值為 60 秒。
sendAllSessions 標記是否將工作階段傳送為分割區塊。如果設為 true,將所有工作階段傳送為一個大區塊。如果設為 false,將工作階段傳送為分割區塊。預設值為 true
sendAllSessionsSize 工作階段區塊訊息中的工作階段數。此值僅在 sendAllSessionsfalse 時有效。預設值為 1000
sendAllSessionsWaitTime 傳送工作階段區塊訊息之間的等待時間。此值僅在 sendAllSessionsfalse 時有效。預設值為 2000 毫秒。
sessionAttributeNameFilter

用於篩選將複製的工作階段屬性的正規表示式。只有名稱符合此模式的屬性才會被複製。如果模式長度為零或為 null,所有屬性都符合複製資格。模式是固定的,因此工作階段屬性名稱必須完全符合模式。例如,值 (userName|sessionHistory) 將只複製兩個名為 userNamesessionHistory 的工作階段屬性。如果未指定,將使用預設值 null

sessionAttributeValueClassNameFilter

用於篩選將複製的工作階段屬性的正規表示式。只有值的實作類別名稱符合此模式的屬性才會被複製。如果模式長度為零或為 null,所有屬性都符合複製資格。模式是固定的,因此完全限定的類別名稱必須完全符合模式。如果未指定,將使用預設值 null,除非啟用 SecurityManager,否則預設值將為 java\\.lang\\.(?:Boolean|Integer|Long|Number|String)

stateTimestampDrop 當此節點傳送 GET_ALL_SESSIONS 訊息至其他節點時,所有接收到的會話訊息都會排隊。如果此屬性設為 true,接收到的會話訊息(除了其他節點傳送的 GET_ALL_SESSIONS)會依其時間戳記進行篩選。如果訊息不是 GET_ALL_SESSIONS 訊息,且其時間戳記早於我們的 GET_ALL_SESSIONS 訊息的時間戳記,則會捨棄該訊息。如果設為 false,則會處理所有排隊的會話訊息。預設為 true
warnOnSessionAttributeFilterFailure

如果 sessionAttributeNameFiltersessionAttributeValueClassNameFilter 封鎖屬性,是否應以 WARN 層級記錄此事件?如果停用 WARN 層級記錄,則會以 DEBUG 記錄。此屬性的預設值為 false,除非啟用 SecurityManager,否則預設值會為 true

org.apache.catalina.ha.session.BackupManager 屬性

屬性 說明
mapSendOptions 備份管理員使用複製地圖,此地圖會傳送和接收訊息。您可以設定此地圖傳送訊息的方式,預設值為 6(同步)。
請注意,如果您使用非同步訊息傳遞,則接收節點可能會以與傳送順序不同的順序處理會話的更新訊息。
maxActiveSessions 此管理員建立的有效會話最大數目,或 -1(預設值)表示沒有限制。對於此管理員,只有目前節點為會話主要節點的會話才會被視為有效會話。
rpcTimeout 用於廣播和從其他地圖傳輸狀態的 RPC 訊息逾時。預設值為 15000 毫秒。
sessionAttributeNameFilter

用於篩選將複製的工作階段屬性的正規表示式。只有名稱符合此模式的屬性才會被複製。如果模式長度為零或為 null,所有屬性都符合複製資格。模式是固定的,因此工作階段屬性名稱必須完全符合模式。例如,值 (userName|sessionHistory) 將只複製兩個名為 userNamesessionHistory 的工作階段屬性。如果未指定,將使用預設值 null

sessionAttributeValueClassNameFilter

用於篩選將複製的工作階段屬性的正規表示式。只有值的實作類別名稱符合此模式的屬性才會被複製。如果模式長度為零或為 null,所有屬性都符合複製資格。模式是固定的,因此完全限定的類別名稱必須完全符合模式。如果未指定,將使用預設值 null,除非啟用 SecurityManager,否則預設值將為 java\\.lang\\.(?:Boolean|Integer|Long|Number|String)

terminateOnStartFailure 如果複製地圖無法啟動,則設為 true 以終止複製地圖。如果終止複製地圖,則關聯的內容將無法啟動。如果您將此屬性設為 false,則複製地圖不會結束。它會嘗試在心跳中加入地圖成員資格。預設值為 false
warnOnSessionAttributeFilterFailure

如果 sessionAttributeNameFiltersessionAttributeValueClassNameFilter 封鎖屬性,是否應以 WARN 層級記錄此事件?如果停用 WARN 層級記錄,則會以 DEBUG 記錄。此屬性的預設值為 false,除非啟用 SecurityManager,否則預設值會為 true

accessTimeout ping 訊息的逾時。如果遠端地圖未在此逾時期間回應,則視為已消失。預設值為 5000 毫秒。

巢狀元件

所有管理員實作

所有管理員實作允許嵌套 <SessionIdGenerator> 元素。它定義會話 ID 產生的行為。SessionIdGenerator 的所有實作允許下列屬性

屬性 說明
sessionIdLength

可以使用 sessionIdLength 屬性變更會話 ID 的長度。