org.apache.catalina

## Interface Cluster

All Known Subinterfaces:
  CatalinaCluster

All Known Implementing Classes:
  SimpleTcpCluster

    public interface Cluster

A Cluster works as a Cluster client/server for the local host Different Cluster implementations can be used to support different ways to communicate within the Cluster. A Cluster implementation is responsible for setting up a way to communicate within the Cluster and also supply "ClientApplications" with `ClusterSender` used when sending information in the Cluster and `ClusterInfo` used for receiving information in the Cluster.

Author:
  Bip Thelin, Remy Maucherat, Filip Hanik

### Method Summary

Methods
`void` `backgroundProcess()` Execute a periodic task, such as reloading, etc.
`Manager` `createManager(String name)` Create a new manager which will use this cluster to replicate its sessions.
`String` `getClusterName()` Return the name of the cluster that this Server is currently configured to operate within.
`Container` `getContainer()` Get the Container associated with our Cluster
`String` `getInfo()` Return descriptive information about this Cluster implementation and the corresponding version number, in the format `<description>/<version>`.
`String` `getProtocol()` Deprecated.
`void` `registerManager(Manager manager)` Register a manager with the cluster.
`void` `removeManager(Manager manager)` Removes a manager from the cluster
`void` `setClusterName(String clusterName)` Set the name of the cluster to join, if no cluster with this name is present create one.
`void` `setContainer(Container container)` Set the Container associated with our Cluster
`void` `setProtocol(String protocol)` Deprecated.

### Method Detail

#### getInfo

    String getInfo()

Return descriptive information about this Cluster implementation and the corresponding version number, in the format `<description>/<version>`.

#### getClusterName

    String getClusterName()

Return the name of the cluster that this Server is currently configured to operate within.

Returns:
  The name of the cluster associated with this server

#### setClusterName

    void setClusterName(String clusterName)

Set the name of the cluster to join, if no cluster with this name is present create one.

Parameters:
  `clusterName` - The clustername to join

#### setContainer

    void setContainer(Container container)

Set the Container associated with our Cluster

Parameters:
  `container` - The Container to use

#### getContainer

    Container getContainer()

Get the Container associated with our Cluster

Returns:
  The Container associated with our Cluster

#### setProtocol

    @Deprecated
    void setProtocol(String protocol)

Deprecated.
Set the protocol parameters.

Parameters:
  `protocol` - The protocol used by the cluster

#### getProtocol

    @Deprecated
    String getProtocol()

Deprecated.
Get the protocol used by the cluster.

Returns:
  The protocol

#### createManager

    Manager createManager(String name)

Create a new manager which will use this cluster to replicate its sessions.

Parameters:
  `name` - Name (key) of the application with which the manager is associated

#### registerManager

    void registerManager(Manager manager)

Register a manager with the cluster. If the cluster is not responsible for creating a manager, then the container will at least notify the cluster that this manager is participating in the cluster.

Parameters:
  `manager` - Manager

#### removeManager

    void removeManager(Manager manager)

Removes a manager from the cluster

Parameters:
  `manager` - Manager

#### backgroundProcess

    void backgroundProcess()

Execute a periodic task, such as reloading, etc. This method will be invoked inside the classloading context of this container. Unexpected throwables will be caught and logged.