# Interface ClusterDeployer

All Superinterfaces:
  `ChannelListener`

All Known Implementing Classes:
  `FarmWarDeployer`

public interface ClusterDeployer extends ChannelListener
A ClusterDeployer interface allows to plug in and out the different deployment implementations

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `backgroundProcess()`
  call from container Background Process
  `CatalinaCluster`
  `getCluster()`
  `void`
  `install(String contextName, File webapp)`
  Install a new web application, whose web application archive is at the specified URL, into this container and all the other members of the cluster with the specified context name.
  `void`
  `remove(String contextName, boolean undeploy)`
  Remove an existing web application, attached to the specified context name.
  `void`
  `setCluster(CatalinaCluster cluster)`
  Associates the cluster deployer with a cluster
  `void`
  `start()`
  Start the cluster deployer, the owning container will invoke this
  `void`
  `stop()`
  Stops the cluster deployer, the owning container will invoke this

  ### Methods inherited from interface ChannelListener

  `accept, messageReceived`

- ## Method Details

  - ### start

    void start() throws Exception
    Start the cluster deployer, the owning container will invoke this
    Throws:
      `Exception` - - if failure to start cluster

  - ### stop

    void stop() throws LifecycleException
    Stops the cluster deployer, the owning container will invoke this
    Throws:
      `LifecycleException` - Error stopping cluster deployer

  - ### install

    void install(String contextName, File webapp) throws IOException
    Install a new web application, whose web application archive is at the specified URL, into this container and all the other members of the cluster with the specified context name.

    If this application is successfully installed locally, a ContainerEvent of type `INSTALL_EVENT` will be sent to all registered listeners, with the newly created `Context` as an argument.

    Parameters:
      `contextName` - The context name to which this application should be installed (must be unique)
      `webapp` - A WAR file or unpacked directory structure containing the web application to be installed
    Throws:
      `IllegalArgumentException` - if the specified context name is malformed
      `IllegalStateException` - if the specified context name is already attached to an existing web application
      `IOException` - if an input/output error was encountered during installation

  - ### remove

    void remove(String contextName, boolean undeploy) throws IOException
    Remove an existing web application, attached to the specified context name. If this application is successfully removed, a ContainerEvent of type `REMOVE_EVENT` will be sent to all registered listeners, with the removed `Context` as an argument. Deletes the web application war file and/or directory if they exist in the Host's appBase.
    Parameters:
      `contextName` - The context name of the application to be removed
      `undeploy` - boolean flag to remove web application from server
    Throws:
      `IllegalArgumentException` - if the specified context name is malformed
      `IllegalArgumentException` - if the specified context name does not identify a currently installed web application
      `IOException` - if an input/output error occurs during removal

  - ### backgroundProcess

    void backgroundProcess()
    call from container Background Process

  - ### getCluster

    CatalinaCluster getCluster()
    Returns:
      the cluster the is associated with

  - ### setCluster

    void setCluster(CatalinaCluster cluster)
    Associates the cluster deployer with a cluster
    Parameters:
      `cluster` - CatalinaCluster