Package 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:
    `MBeanRegistration`, `DistributedManager`, `ClusterManager`, `JmxEnabled`, `Lifecycle`, `Manager`, `AbstractReplicatedMap.MapOwner`

      public class BackupManager
      extends ClusterManagerBase
      implements AbstractReplicatedMap.MapOwner, DistributedManager

- - ### Nested Class Summary

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

      `ManagerBase.SessionTiming`

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      `Lifecycle.SingleUse`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static long` | `DEFAULT_REPL_TIMEOUT` |
    `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

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

    - ### 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 | Description
    --- | ---
    `BackupManager()` | Constructor, just calls super()

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ClusterManager` | `cloneFromTemplate()` |
    `Session` | `createEmptySession()` | Get a session from the recycled ones or create a new empty one.
    `long` | `getAccessTimeout()` |
    `int` | `getActiveSessionsFull()` | Returns the total session count for primary, backup and proxy.
    `String[]` | `getInvalidatedSessions()` | When the manager expires session not tied to a request.
    `String` | `getMapName()` |
    `int` | `getMapSendOptions()` |
    `String` | `getMapSendOptionsName()` | returns the SendOptions as a comma separated list of names
    `String` | `getName()` | Return the name of the manager, at host /context name and at engine hostname+/context.
    `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` | `objectMadePrimary​(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` | `setAccessTimeout​(long accessTimeout)` |
    `void` | `setMapSendOptions​(int mapSendOptions)` |
    `void` | `setMapSendOptions​(String 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, getDeltaRequestPool, getReplicationStream, getReplicationStream, isNotifyListenersOnReplication, isRecordAllActions, load, registerSessionAtReplicationValve, setCluster, setNotifyListenersOnReplication, setRecordAllActions, unload`

    - ### Methods inherited from class org.apache.catalina.session.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, willAttributeDistribute`

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

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

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

      `addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, 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, 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 Detail

    - #### sm

          protected static final StringManager sm

      The string manager for this package.

    - #### DEFAULT_REPL_TIMEOUT

          protected static final long DEFAULT_REPL_TIMEOUT

      See Also:
        Constant Field Values

    - #### 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.

    - #### 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.

    - #### objectMadePrimary

          public void objectMadePrimary​(Object key,
                                        Object value)

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

    - #### createEmptySession

          public Session createEmptySession()

      Description copied from interface: `Manager`
      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`
      Returns:
        An empty Session object

    - #### getName

          public String getName()

      Description copied from interface: `ClusterManager`
      Return the name of the manager, at host /context name and at engine hostname+/context.
      Specified by:
        `getName` in interface `ClusterManager`
      Overrides:
        `getName` in class `ManagerBase`
      Returns:
        The descriptive short name of this Manager implementation.

    - #### 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

    - #### 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`
      Parameters:
        `name` - The manager name

    - #### setMapSendOptions

          public void setMapSendOptions​(int mapSendOptions)

    - #### setMapSendOptions

          public void setMapSendOptions​(String mapSendOptions)

    - #### getMapSendOptions

          public int getMapSendOptions()

    - #### getMapSendOptionsName

          public String 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)

    - #### getRpcTimeout

          public long getRpcTimeout()

    - #### setTerminateOnStartFailure

          public void setTerminateOnStartFailure​(boolean terminateOnStartFailure)

    - #### isTerminateOnStartFailure

          public boolean isTerminateOnStartFailure()

    - #### getAccessTimeout

          public long getAccessTimeout()

    - #### setAccessTimeout

          public void setAccessTimeout​(long accessTimeout)

    - #### 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.