Package org.apache.catalina.ha

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

Author:
  Peter Rossbach

### Method Summary

All Methods Instance Methods Abstract Methods
`ClusterManager` `cloneFromTemplate()`
`CatalinaCluster` `getCluster()`
`java.lang.String[]` `getInvalidatedSessions()` When the manager expires session not tied to a request.
`java.lang.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)`
`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​(java.lang.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)`
`void` `setName​(java.lang.String name)` Set the name of the manager, at host /context name and at engine hostname+/context

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

`add, addPropertyChangeListener, backgroundProcess, changeSessionId, changeSessionId, createEmptySession, createSession, findSession, findSessions, getActiveSessions, getContext, getExpiredSessions, getMaxActive, getRejectedSessions, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdGenerator, getSessionMaxAliveTime, load, remove, remove, removePropertyChangeListener, setContext, setExpiredSessions, setMaxActive, setSessionCounter, setSessionIdGenerator, setSessionMaxAliveTime, unload, willAttributeDistribute`

### Method Detail

#### 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​(java.lang.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

    java.lang.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

    java.lang.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​(java.lang.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()

#### setCluster

    void setCluster​(CatalinaCluster cluster)

#### getReplicationStream

    ReplicationStream getReplicationStream​(byte[] data)
                                    throws java.io.IOException

Open stream and use correct ClassLoader (Container), switching thread context class loader.

Parameters:
  `data` - The data
Returns:
  The object input stream
Throws:
  `java.io.IOException` - An error occurred

#### getReplicationStream

    ReplicationStream getReplicationStream​(byte[] data,
                                           int offset,
                                           int length)
                                    throws java.io.IOException

Throws:
  `java.io.IOException`

#### isNotifyListenersOnReplication

    boolean isNotifyListenersOnReplication()

#### cloneFromTemplate

    ClusterManager cloneFromTemplate()