Class BackupManager
java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.session.ManagerBase
org.apache.catalina.ha.session.ClusterManagerBase
org.apache.catalina.ha.session.BackupManager
- All Implemented Interfaces:
MBeanRegistration, DistributedManager, ClusterManager, JmxEnabled, Lifecycle, Manager, AbstractReplicatedMap.MapOwner
public class BackupManager
extends ClusterManagerBase
implements AbstractReplicatedMap.MapOwner, DistributedManager
Cluster session manager that provides backup session replication. Each session has one primary and one backup node.
-
Nested Class Summary
Nested classes/interfaces inherited from class ManagerBase
ManagerBase.SessionTimingNested classes/interfaces inherited from interface Lifecycle
Lifecycle.SingleUse -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final longDefault replication timeout in milliseconds.protected StringThe name of this managerprotected static final StringManagerThe string manager for this package.Fields inherited from class ClusterManagerBase
clusterFields inherited from class ManagerBase
duplicates, expiredSessions, maxActive, maxActiveSessions, processExpiresFrequency, processingTime, rejectedSessions, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, sessionCounter, sessionCreationTiming, sessionExpirationTiming, sessionIdGenerator, sessionIdGeneratorClass, sessionMaxAliveTime, sessions, support, TIMING_STATS_CACHE_SIZEFields inherited from interface Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCreates a clone of this manager from a template configuration.Get a session from the recycled ones or create a new empty one.longReturns the access timeout for the replication map.intReturns the total session count for primary, backup and proxy.String[]When the manager expires session not tied to a request.Returns the name of the replication map.intReturns the channel send options for the replication map.returns the SendOptions as a comma separated list of namesgetName()Returns the descriptive short name of this Manager implementation.longReturns the RPC timeout for replication messages.Returns the list of all sessions IDS (primary, backup and proxy).booleanReturns whether the map will terminate on start failure.voidA message was received from another node, this is the callback method to implement if you are interested in receiving replication messages.voidobjectMadePrimary(Object key, Object value) Called when an object becomes primary on this node.requestCompleted(String sessionId) When the request has been completed, the replication valve will notify the manager, and the manager will decide whether any replication is needed or not.voidsetAccessTimeout(long accessTimeout) Sets the access timeout for the replication map.voidsetMapSendOptions(int mapSendOptions) Sets the channel send options for the replication map.voidsetMapSendOptions(String mapSendOptions) Sets the channel send options for the replication map from a string.voidSet the name of the manager, at host /context name and at engine hostname+/contextvoidsetRpcTimeout(long rpcTimeout) Sets the RPC timeout for replication messages.voidsetTerminateOnStartFailure(boolean terminateOnStartFailure) Sets whether to terminate the map on start failure.protected voidStart this component and implement the requirements ofLifecycleBase.startInternal().protected voidStop this component and implement the requirements ofLifecycleBase.stopInternal().Methods inherited from class ClusterManagerBase
clone, getClassLoaders, getClassLoaders, getCluster, getDeltaRequestPool, getReplicationStream, getReplicationStream, isNotifyListenersOnReplication, isRecordAllActions, load, registerSessionAtReplicationValve, setCluster, setNotifyListenersOnReplication, setRecordAllActions, unloadMethods inherited from class ManagerBase
add, addPropertyChangeListener, backgroundProcess, changeSessionId, changeSessionId, createSession, expireSession, findSession, findSessions, generateSessionId, getActiveSessions, getClassName, getContext, getCreationTime, getCreationTimestamp, getDomainInternal, getDuplicates, getEngine, getExpiredSessions, getJvmRoute, getLastAccessedTime, getLastAccessedTimestamp, getMaxActive, getMaxActiveSessions, getNewSession, getNotifyAttributeListenerOnUnchangedValue, getNotifyBindingListenerOnUnchangedValue, getObjectNameKeyProperties, getPersistAuthentication, getProcessExpiresFrequency, getProcessingTime, getRejectedSessions, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, getSession, getSessionActivityCheck, getSessionAttribute, getSessionAttributeNameFilter, getSessionAttributeNamePattern, getSessionAttributeValueClassNameFilter, getSessionAttributeValueClassNamePattern, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdGenerator, getSessionLastAccessAtStart, getSessionMaxAliveTime, getThisAccessedTime, getThisAccessedTimestamp, getWarnOnSessionAttributeFilterFailure, initInternal, listSessionIds, processExpires, remove, remove, removePropertyChangeListener, rotateSessionId, setContext, setDuplicates, setExpiredSessions, setMaxActive, setMaxActiveSessions, setNotifyAttributeListenerOnUnchangedValue, setNotifyBindingListenerOnUnchangedValue, setPersistAuthentication, setProcessExpiresFrequency, setProcessingTime, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSessionActivityCheck, setSessionAttributeNameFilter, setSessionAttributeValueClassNameFilter, setSessionCounter, setSessionIdGenerator, setSessionLastAccessAtStart, setSessionMaxAliveTime, setWarnOnSessionAttributeFilterFailure, toString, updateSessionMaxAliveTime, willAttributeDistributeMethods inherited from class LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregisterMethods inherited from class LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stopMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Manager
add, addPropertyChangeListener, backgroundProcess, changeSessionId, createSession, findSession, findSessions, getActiveSessions, getContext, getExpiredSessions, getMaxActive, getNotifyAttributeListenerOnUnchangedValue, getNotifyBindingListenerOnUnchangedValue, getRejectedSessions, getSessionActivityCheck, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdGenerator, getSessionLastAccessAtStart, getSessionMaxAliveTime, remove, remove, removePropertyChangeListener, rotateSessionId, setContext, setExpiredSessions, setMaxActive, setNotifyAttributeListenerOnUnchangedValue, setNotifyBindingListenerOnUnchangedValue, setSessionActivityCheck, setSessionCounter, setSessionIdGenerator, setSessionLastAccessAtStart, setSessionMaxAliveTime, willAttributeDistribute
-
Field Details
-
sm
The string manager for this package. -
DEFAULT_REPL_TIMEOUT
protected static final long DEFAULT_REPL_TIMEOUTDefault replication timeout in milliseconds.- See Also:
-
name
The name of this manager
-
-
Constructor Details
-
BackupManager
public BackupManager()Constructor, just calls super()
-
-
Method Details
-
messageDataReceived
Description copied from interface:ClusterManagerA message was received from another node, this is the callback method to implement if you are interested in receiving replication messages.- Specified by:
messageDataReceivedin interfaceClusterManager- Parameters:
msg- - the message received.
-
requestCompleted
Description copied from interface:ClusterManagerWhen the request has been completed, the replication valve will notify the manager, and the manager will decide whether any replication is needed or not. If there is a need for replication, the manager will create a session message and that will be replicated. The cluster determines where it gets sent.- Specified by:
requestCompletedin interfaceClusterManager- Parameters:
sessionId- - the sessionId that just completed.- Returns:
- a SessionMessage to be sent.
-
objectMadePrimary
Description copied from interface:AbstractReplicatedMap.MapOwnerCalled when an object becomes primary on this node.- Specified by:
objectMadePrimaryin interfaceAbstractReplicatedMap.MapOwner- Parameters:
key- The key of the objectvalue- The value of the object
-
createEmptySession
Description copied from interface:ManagerGet a session from the recycled ones or create a new empty one. The PersistentManager manager does not need to create session data because it reads it from the Store.- Specified by:
createEmptySessionin interfaceManager- Overrides:
createEmptySessionin classManagerBase- Returns:
- An empty Session object
-
getName
Description copied from class:ManagerBaseReturns the descriptive short name of this Manager implementation.- Specified by:
getNamein interfaceClusterManager- Overrides:
getNamein classManagerBase- Returns:
- The descriptive short name of this Manager implementation.
-
startInternal
Start this component and implement the requirements ofLifecycleBase.startInternal(). Starts the cluster communication channel, this will connect with the other nodes in the cluster, and request the current session state to be transferred to this node.- Overrides:
startInternalin classClusterManagerBase- Throws:
LifecycleException- if this component detects a fatal error that prevents this component from being used
-
getMapName
-
stopInternal
Stop this component and implement the requirements ofLifecycleBase.stopInternal(). This will disconnect the cluster communication channel and stop the listener thread.- Overrides:
stopInternalin classClusterManagerBase- Throws:
LifecycleException- if this component detects a fatal error that prevents this component from being used
-
setName
Description copied from interface:ClusterManagerSet the name of the manager, at host /context name and at engine hostname+/context- Specified by:
setNamein interfaceClusterManager- Parameters:
name- The manager name
-
setMapSendOptions
public void setMapSendOptions(int mapSendOptions) Sets the channel send options for the replication map.- Parameters:
mapSendOptions- the send options as an integer flag
-
setMapSendOptions
Sets the channel send options for the replication map from a string.- Parameters:
mapSendOptions- the send options as a comma-separated string
-
getMapSendOptions
public int getMapSendOptions()Returns the channel send options for the replication map.- Returns:
- the send options as an integer flag
-
getMapSendOptionsName
returns the SendOptions as a comma separated list of names- Returns:
- a comma separated list of the option names
-
setRpcTimeout
public void setRpcTimeout(long rpcTimeout) Sets the RPC timeout for replication messages.- Parameters:
rpcTimeout- the timeout in milliseconds
-
getRpcTimeout
public long getRpcTimeout()Returns the RPC timeout for replication messages.- Returns:
- the timeout in milliseconds
-
setTerminateOnStartFailure
public void setTerminateOnStartFailure(boolean terminateOnStartFailure) Sets whether to terminate the map on start failure.- Parameters:
terminateOnStartFailure-trueto terminate on start failure
-
isTerminateOnStartFailure
public boolean isTerminateOnStartFailure()Returns whether the map will terminate on start failure.- Returns:
trueif the map will terminate on start failure
-
getAccessTimeout
public long getAccessTimeout()Returns the access timeout for the replication map.- Returns:
- the access timeout in milliseconds
-
setAccessTimeout
public void setAccessTimeout(long accessTimeout) Sets the access timeout for the replication map.- Parameters:
accessTimeout- the access timeout in milliseconds
-
getInvalidatedSessions
Description copied from interface:ClusterManagerWhen the manager expires session not tied to a request. The cluster will periodically ask for a list of sessions that should expire and that should be sent across the wire.- Specified by:
getInvalidatedSessionsin interfaceClusterManager- Returns:
- String[] The invalidated sessions
-
cloneFromTemplate
Description copied from interface:ClusterManagerCreates a clone of this manager from a template configuration.- Specified by:
cloneFromTemplatein interfaceClusterManager- Returns:
- a clone of a template manager configuration
-
getActiveSessionsFull
public int getActiveSessionsFull()Description copied from interface:DistributedManagerReturns the total session count for primary, backup and proxy.- Specified by:
getActiveSessionsFullin interfaceDistributedManager- Returns:
- The total session count across the cluster.
-
getSessionIdsFull
Description copied from interface:DistributedManagerReturns the list of all sessions IDS (primary, backup and proxy).- Specified by:
getSessionIdsFullin interfaceDistributedManager- Returns:
- The complete set of sessions IDs across the cluster.
-