org.apache.catalina.ha.session

## 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:
  PropertyChangeListener, EventListener, MBeanRegistration, DistributedManager, ClusterManager, Lifecycle, Manager, AbstractReplicatedMap.MapOwner

    public class BackupManager
    extends ClusterManagerBase
    implements AbstractReplicatedMap.MapOwner, DistributedManager

Version:
  1.0
Author:
  Filip Hanik

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.catalina.session.ManagerBase

`ManagerBase.SessionTiming`

### Field Summary

Fields
`protected static long` `DEFAULT_REPL_TIMEOUT`
`protected boolean` `mExpireSessionsOnShutdown` Deprecated. Unused - will be removed in Tomcat 8.0.x
`protected String` `name` The name of this manager
`protected static StringManager` `sm` The string manager for this package.

### Fields inherited from class org.apache.catalina.ha.session.ClusterManagerBase

`cluster`

### Fields inherited from class org.apache.catalina.session.ManagerBase

`container, distributable, duplicates, expiredSessions, maxActive, maxActiveSessions, maxInactiveInterval, processExpiresFrequency, processingTime, rejectedSessions, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, sessionCounter, sessionCreationTiming, sessionExpirationTiming, sessionIdGenerator, sessionIdLength, sessionMaxAliveTime, sessions, support, TIMING_STATS_CACHE_SIZE`

### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

`mserver`

### Fields inherited from interface org.apache.catalina.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
Constructor and Description
`BackupManager()` Constructor, just calls super()

### Method Summary

Methods
`ClusterManager` `cloneFromTemplate()`
`Session` `createEmptySession()` Get a session from the recycled ones or create a new empty one.
`int` `getActiveSessionsFull()` Returns the total session count for primary, backup and proxy.
`boolean` `getExpireSessionsOnShutdown()` Deprecated. Unused - will be removed in Tomcat 8.0.x
`String[]` `getInvalidatedSessions()` When the manager expires session not tied to a request.
`String` `getMapName()`
`int` `getMapSendOptions()`
`String` `getName()` Return the descriptive short name of this Manager implementation.
`long` `getRpcTimeout()`
`Set<String>` `getSessionIdsFull()` Returns the list of all sessions IDS (primary, backup and proxy).
`boolean` `isTerminateOnStartFailure()`
`void` `messageDataReceived(ClusterMessage msg)` A message was received from another node, this is the callback method to implement if you are interested in receiving replication messages.
`void` `objectMadePrimay(Object key, Object value)`
`ClusterMessage` `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.
`void` `setDistributable(boolean dist)` Set the distributable flag for the sessions supported by this Manager.
`void` `setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown)` Deprecated. Unused - will be removed in Tomcat 8.0.x
`void` `setMapSendOptions(int mapSendOptions)`
`void` `setName(String name)` Set the name of the manager, at host /context name and at engine hostname+/context
`void` `setRpcTimeout(long rpcTimeout)`
`void` `setTerminateOnStartFailure(boolean terminateOnStartFailure)`
`protected void` `startInternal()` Start this component and implement the requirements of `LifecycleBase.startInternal()`.
`protected void` `stopInternal()` Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.

### Methods inherited from class org.apache.catalina.ha.session.ClusterManagerBase

`clone, getClassLoaders, getClassLoaders, getCluster, getReplicationStream, getReplicationStream, getSessionAttributeFilter, isNotifyListenersOnReplication, load, registerSessionAtReplicationValve, setCluster, setNotifyListenersOnReplication, setSessionAttributeFilter, unload, willAttributeDistribute`

### Methods inherited from class org.apache.catalina.session.ManagerBase

`add, addPropertyChangeListener, backgroundProcess, changeSessionId, createSession, expireSession, findSession, findSessions, generateSessionId, getActiveSessions, getClassName, getContainer, getCreationTime, getCreationTimestamp, getDistributable, getDomainInternal, getDuplicates, getEngine, getExpiredSessions, getInfo, getJvmRoute, getLastAccessedTime, getLastAccessedTimestamp, getMaxActive, getMaxActiveSessions, getMaxInactiveInterval, getNewSession, getObjectNameKeyProperties, getProcessExpiresFrequency, getProcessingTime, getRejectedSessions, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, getSession, getSessionAttribute, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdLength, getSessionMaxAliveTime, getThisAccessedTime, getThisAccessedTimestamp, initInternal, listSessionIds, processExpires, propertyChange, remove, remove, removePropertyChangeListener, setContainer, setDuplicates, setExpiredSessions, setMaxActive, setMaxActiveSessions, setMaxInactiveInterval, setProcessExpiresFrequency, setProcessingTime, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSessionCounter, setSessionIdLength, setSessionMaxAliveTime, toString, updateSessionMaxAliveTime`

### Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

`destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister`

### Methods inherited from class org.apache.catalina.util.LifecycleBase

`addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.catalina.Manager

`add, addPropertyChangeListener, backgroundProcess, changeSessionId, createSession, findSession, findSessions, getActiveSessions, getContainer, getDistributable, getExpiredSessions, getInfo, getMaxActive, getMaxInactiveInterval, getRejectedSessions, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdLength, getSessionMaxAliveTime, remove, remove, removePropertyChangeListener, setContainer, setExpiredSessions, setMaxActive, setMaxInactiveInterval, setSessionCounter, setSessionIdLength, setSessionMaxAliveTime`

### Field Detail

#### sm

    protected static final StringManager sm

The string manager for this package.

#### DEFAULT_REPL_TIMEOUT

    protected static long DEFAULT_REPL_TIMEOUT

#### mExpireSessionsOnShutdown

    @Deprecated
    protected boolean mExpireSessionsOnShutdown

Deprecated. Unused - will be removed in Tomcat 8.0.x
Set to true if we don't want the sessions to expire on shutdown

#### name

    protected String name

The name of this manager

### Constructor Detail

#### BackupManager

    public BackupManager()

Constructor, just calls super()

### Method Detail

#### messageDataReceived

    public void messageDataReceived(ClusterMessage msg)

Description copied from interface: `ClusterManager`
A message was received from another node, this is the callback method to implement if you are interested in receiving replication messages.

Specified by:
  `messageDataReceived` in interface `ClusterManager`
Parameters:
  `msg` - - the message received.

#### setExpireSessionsOnShutdown

    @Deprecated
    public void setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown)

Deprecated. Unused - will be removed in Tomcat 8.0.x

#### getExpireSessionsOnShutdown

    @Deprecated
    public boolean getExpireSessionsOnShutdown()

Deprecated. Unused - will be removed in Tomcat 8.0.x

#### requestCompleted

    public ClusterMessage requestCompleted(String sessionId)

Description copied from interface: `ClusterManager`
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. 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:
  `requestCompleted` in interface `ClusterManager`
Parameters:
  `sessionId` - - the sessionId that just completed.
Returns:
  a SessionMessage to be sent.

#### objectMadePrimay

    public void objectMadePrimay(Object key,
                        Object value)

Specified by:
  `objectMadePrimay` in interface `AbstractReplicatedMap.MapOwner`

#### createEmptySession

    public Session createEmptySession()

Description copied from class: `ManagerBase`
Get 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:
  `createEmptySession` in interface `Manager`
Overrides:
  `createEmptySession` in class `ManagerBase`

#### getName

    public String getName()

Description copied from class: `ManagerBase`
Return the descriptive short name of this Manager implementation.

Specified by:
  `getName` in interface `ClusterManager`
Overrides:
  `getName` in class `ManagerBase`
Returns:
  String

#### startInternal

    protected void startInternal()
                          throws LifecycleException

Start this component and implement the requirements of `LifecycleBase.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:
  `startInternal` in class `ClusterManagerBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### getMapName

    public String getMapName()

#### stopInternal

    protected void stopInternal()
                         throws LifecycleException

Stop this component and implement the requirements of `LifecycleBase.stopInternal()`. This will disconnect the cluster communication channel and stop the listener thread.

Overrides:
  `stopInternal` in class `ClusterManagerBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### setDistributable

    public void setDistributable(boolean dist)

Description copied from class: `ManagerBase`
Set the distributable flag for the sessions supported by this Manager. If this flag is set, all user data objects added to sessions associated with this manager must implement Serializable.

Specified by:
  `setDistributable` in interface `Manager`
Overrides:
  `setDistributable` in class `ManagerBase`
Parameters:
  `dist` - The new distributable flag

#### setName

    public void setName(String name)

Description copied from interface: `ClusterManager`
Set the name of the manager, at host /context name and at engine hostname+/context

Specified by:
  `setName` in interface `ClusterManager`

#### setMapSendOptions

    public void setMapSendOptions(int mapSendOptions)

#### getMapSendOptions

    public int getMapSendOptions()

#### setRpcTimeout

    public void setRpcTimeout(long rpcTimeout)

#### getRpcTimeout

    public long getRpcTimeout()

#### setTerminateOnStartFailure

    public void setTerminateOnStartFailure(boolean terminateOnStartFailure)

#### isTerminateOnStartFailure

    public boolean isTerminateOnStartFailure()

#### getInvalidatedSessions

    public String[] getInvalidatedSessions()

Description copied from interface: `ClusterManager`
When 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:
  `getInvalidatedSessions` in interface `ClusterManager`
Returns:
  String[] The invalidated sessions

#### cloneFromTemplate

    public ClusterManager cloneFromTemplate()

Specified by:
  `cloneFromTemplate` in interface `ClusterManager`

#### getActiveSessionsFull

    public int getActiveSessionsFull()

Description copied from interface: `DistributedManager`
Returns the total session count for primary, backup and proxy.

Specified by:
  `getActiveSessionsFull` in interface `DistributedManager`
Returns:
  The total session count across the cluster.

#### getSessionIdsFull

    public Set<String> getSessionIdsFull()

Description copied from interface: `DistributedManager`
Returns the list of all sessions IDS (primary, backup and proxy).

Specified by:
  `getSessionIdsFull` in interface `DistributedManager`
Returns:
  The complete set of sessions IDs across the cluster.