# Class ControllerService

java.lang.Object
org.apache.zookeeper.server.controller.ControllerService

public class ControllerService extends Object
Main class which starts a ZooKeeperServer, a ZooKeeperServerController and the ControllerService. Tests should either invoke this class as the main target of a new JVM process OR explicitly start and stop a singleton of this class in their test process.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected QuorumPeerConfig`
`config`
`protected QuorumPeer`
`quorumPeer`

## Constructor Summary

Constructors
Constructor
Description
`ControllerService()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`cleanup()`
`protected void`
`initConfig(String[] args)`
Derived classes may override to do custom initialization of command line args.
`void`
`initializeAndRun(String[] args)`
Runs the main loop for this application but does not exit the process.
`protected void`
`initService()`
Initializes an instance of the ZooKeeperServer, the ZooKeeperServerController, and a new Http listener (CommandListener) for the controller.
`boolean`
`isReady()`
Is the service up with all necessary initialization and port opening complete?
`static void`
`main(String[] args)`
Starts the ControllerService as a stand alone app.
`protected void`
`run()`
`void`
`runFromConfig(QuorumPeerConfig config)`
Run the app given a QuorumPeerConfig.
`protected void`
`runServices()`
`void`
`shutdown()`
`Thread`
`start(ControllerServerConfig controllerConfig)`
Starts a new thread to run the controller (useful when this service is hosted in process - such as during unit testing).

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### config

protected QuorumPeerConfig config

### quorumPeer

protected QuorumPeer quorumPeer

## Constructor Details

### ControllerService

public ControllerService()

## Method Details

### main

public static void main(String[] args)
Starts the ControllerService as a stand alone app. Useful for out of process testing - such as during integration testing.

### start

public Thread start(ControllerServerConfig controllerConfig)
Starts a new thread to run the controller (useful when this service is hosted in process - such as during unit testing).

### shutdown

public void shutdown()

### initService

protected void initService() throws IOException
Initializes an instance of the ZooKeeperServer, the ZooKeeperServerController, and a new Http listener (CommandListener) for the controller.

Throws:
  `IOException`

### runServices

protected void runServices()

### cleanup

protected void cleanup()

### initializeAndRun

public void initializeAndRun(String[] args) throws QuorumPeerConfig.ConfigException
Runs the main loop for this application but does not exit the process.

Throws:
  `QuorumPeerConfig.ConfigException`

### initConfig

protected void initConfig(String[] args) throws QuorumPeerConfig.ConfigException
Derived classes may override to do custom initialization of command line args.

Throws:
  `QuorumPeerConfig.ConfigException`

### runFromConfig

public void runFromConfig(QuorumPeerConfig config)
Run the app given a QuorumPeerConfig.

Parameters:
  `config` - The quorum peer config.

### run

protected void run()

### isReady

public boolean isReady()
Is the service up with all necessary initialization and port opening complete?

Returns:
  true if the controller service is ready to use; false otherwise.