# Interface ClusterManager

All Superinterfaces:
  `Manager`

All Known Implementing Classes:
  `BackupManager, ClusterManagerBase, DeltaManager`

public interface ClusterManager extends Manager
The common interface used by all cluster manager. This is so that we can have a more pluggable way of swapping session managers for different algorithms.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ClusterManager`
  `cloneFromTemplate()`
  `CatalinaCluster`
  `getCluster()`
  `String[]`
  `getInvalidatedSessions()`
  When the manager expires session not tied to a request.
  `String`
  `getName()`
  Return the name of the manager, at host /context name and at engine hostname+/context.
  `ReplicationStream`
  `getReplicationStream(byte[] data)`
  Open stream and use correct ClassLoader (Container), switching thread context class loader.
  `ReplicationStream`
  `getReplicationStream(byte[] data, int offset, int length)`
  Open stream and use correct ClassLoader (Container), switching thread context class loader.
  `boolean`
  `isNotifyListenersOnReplication()`
  `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.
  `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`
  `setCluster(CatalinaCluster cluster)`
  Set the cluster associated with this manager.
  `void`
  `setName(String name)`
  Set the name of the manager, at host /context name and at engine hostname+/context

  ### Methods inherited from interface Manager

  `add, addPropertyChangeListener, backgroundProcess, changeSessionId, createEmptySession, createSession, findSession, findSessions, getActiveSessions, getContext, getExpiredSessions, getMaxActive, getNotifyAttributeListenerOnUnchangedValue, getNotifyBindingListenerOnUnchangedValue, getRejectedSessions, getSessionActivityCheck, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdGenerator, getSessionLastAccessAtStart, getSessionMaxAliveTime, load, remove, remove, removePropertyChangeListener, rotateSessionId, setContext, setExpiredSessions, setMaxActive, setNotifyAttributeListenerOnUnchangedValue, setNotifyBindingListenerOnUnchangedValue, setSessionActivityCheck, setSessionIdGenerator, setSessionLastAccessAtStart, setSessionMaxAliveTime, unload, willAttributeDistribute`

- ## Method Details

  - ### messageDataReceived

    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.
    Parameters:
      `msg` - - the message received.

  - ### requestCompleted

    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. 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.
    Parameters:
      `sessionId` - - the sessionId that just completed.
    Returns:
      a SessionMessage to be sent.

  - ### getInvalidatedSessions

    String[] getInvalidatedSessions()
    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.
    Returns:
      String[] The invalidated sessions

  - ### getName

    String getName()
    Return the name of the manager, at host /context name and at engine hostname+/context.
    Returns:
      String
    Since:
      5.5.10

  - ### setName

    void setName(String name)
    Set the name of the manager, at host /context name and at engine hostname+/context
    Parameters:
      `name` - The manager name
    Since:
      5.5.10

  - ### getCluster

    CatalinaCluster getCluster()
    Returns:
      the cluster associated with this manager

  - ### setCluster

    void setCluster(CatalinaCluster cluster)
    Set the cluster associated with this manager.
    Parameters:
      `cluster` - the cluster

  - ### getReplicationStream

    ReplicationStream getReplicationStream(byte[] data) throws IOException
    Open stream and use correct ClassLoader (Container), switching thread context class loader.
    Parameters:
      `data` - the data
    Returns:
      the object input stream
    Throws:
      `IOException` - An error occurred

  - ### getReplicationStream

    ReplicationStream getReplicationStream(byte[] data, int offset, int length) throws IOException
    Open stream and use correct ClassLoader (Container), switching thread context class loader.
    Parameters:
      `data` - the data
      `offset` - the offset in the data array
      `length` - the data length
    Returns:
      the object input stream
    Throws:
      `IOException` - An error occurred

  - ### isNotifyListenersOnReplication

    boolean isNotifyListenersOnReplication()
    Returns:
      `true` if listeners are notified on replication

  - ### cloneFromTemplate

    ClusterManager cloneFromTemplate()
    Returns:
      a clone of a template manager configuration