org.apache.catalina.core

## Class StandardService

- java.lang.Object
- - org.apache.catalina.util.LifecycleBase
  - - org.apache.catalina.util.LifecycleMBeanBase
    - - org.apache.catalina.core.StandardService

All Implemented Interfaces:
  MBeanRegistration, Lifecycle, Service

Direct Known Subclasses:
  Embedded

    public class StandardService
    extends LifecycleMBeanBase
    implements Service

Standard implementation of the `Service` interface. The associated Container is generally an instance of Engine, but this is not required.

Author:
  Craig R. McClanahan

### Field Summary

Fields
`protected Connector[]` `connectors` The set of Connectors associated with this Service.
`protected Container` `container` The Container associated with this Service.
`protected ArrayList<Executor>` `executors`
`protected PropertyChangeSupport` `support` The property change support for this component.

### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

`mserver`

### Fields inherited from interface org.apache.catalina.Lifecycle

`AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

### Constructor Summary

Constructors
Constructor and Description
`StandardService()`

### Method Summary

Methods
`void` `addConnector(Connector connector)` Add a new Connector to the set of defined Connectors, and associate it with this Service's Container.
`void` `addExecutor(Executor ex)` Adds a named executor to the service
`void` `addPropertyChangeListener(PropertyChangeListener listener)` Add a property change listener to this component.
`protected void` `destroyInternal()` Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.
`Connector[]` `findConnectors()` Find and return the set of Connectors associated with this Service.
`Executor[]` `findExecutors()` Retrieves all executors
`ObjectName[]` `getConnectorNames()`
`Container` `getContainer()` Return the `Container` that handles requests for all `Connectors` associated with this Service.
`protected String` `getDomainInternal()` Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`Executor` `getExecutor(String executorName)` Retrieves executor by name, null if not found
`String` `getInfo()` Return descriptive information about this Service implementation and the corresponding version number, in the format `<description>/<version>`.
`String` `getName()` Return the name of this Service.
`String` `getObjectNameKeyProperties()` Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
`ClassLoader` `getParentClassLoader()` Return the parent class loader for this component.
`Server` `getServer()` Return the `Server` with which we are associated (if any).
`protected void` `initInternal()` Invoke a pre-startup initialization.
`void` `removeConnector(Connector connector)` Remove the specified Connector from the set associated from this Service.
`void` `removeExecutor(Executor ex)` Removes an executor from the service
`void` `removePropertyChangeListener(PropertyChangeListener listener)` Remove a property change listener from this component.
`void` `setContainer(Container container)` Set the `Container` that handles requests for all `Connectors` associated with this Service.
`void` `setName(String name)` Set the name of this Service.
`void` `setParentClassLoader(ClassLoader parent)` Set the parent class loader for this server.
`void` `setServer(Server server)` Set the `Server` with which we are associated (if any).
`protected void` `startInternal()` Start nested components (`Executor`s, `Connector`s and `Container`s) and implement the requirements of `LifecycleBase.startInternal()`.
`protected void` `stopInternal()` Stop nested components (`Executor`s, `Connector`s and `Container`s) and implement the requirements of `LifecycleBase.stopInternal()`.
`String` `toString()` Return a String representation of this component.

### Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

`getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister`

### Methods inherited from class org.apache.catalina.util.LifecycleBase

`addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop`

### Methods inherited from class java.lang.Object

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

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

`addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

### Field Detail

#### support

    protected PropertyChangeSupport support

The property change support for this component.

#### connectors

    protected Connector[] connectors

The set of Connectors associated with this Service.

#### executors

    protected ArrayList<Executor> executors

#### container

    protected Container container

The Container associated with this Service. (In the case of the org.apache.catalina.startup.Embedded subclass, this holds the most recently added Engine.)

### Constructor Detail

#### StandardService

    public StandardService()

### Method Detail

#### getContainer

    public Container getContainer()

Return the `Container` that handles requests for all `Connectors` associated with this Service.

Specified by:
  `getContainer` in interface `Service`

#### setContainer

    public void setContainer(Container container)

Set the `Container` that handles requests for all `Connectors` associated with this Service.

Specified by:
  `setContainer` in interface `Service`
Parameters:
  `container` - The new Container

#### getInfo

    public String getInfo()

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

Specified by:
  `getInfo` in interface `Service`

#### getName

    public String getName()

Return the name of this Service.

Specified by:
  `getName` in interface `Service`

#### setName

    public void setName(String name)

Set the name of this Service.

Specified by:
  `setName` in interface `Service`
Parameters:
  `name` - The new service name

#### getServer

    public Server getServer()

Return the `Server` with which we are associated (if any).

Specified by:
  `getServer` in interface `Service`

#### setServer

    public void setServer(Server server)

Set the `Server` with which we are associated (if any).

Specified by:
  `setServer` in interface `Service`
Parameters:
  `server` - The server that owns this Service

#### addConnector

    public void addConnector(Connector connector)

Add a new Connector to the set of defined Connectors, and associate it with this Service's Container.

Specified by:
  `addConnector` in interface `Service`
Parameters:
  `connector` - The Connector to be added

#### getConnectorNames

    public ObjectName[] getConnectorNames()

#### addPropertyChangeListener

    public void addPropertyChangeListener(PropertyChangeListener listener)

Add a property change listener to this component.

Parameters:
  `listener` - The listener to add

#### findConnectors

    public Connector[] findConnectors()

Find and return the set of Connectors associated with this Service.

Specified by:
  `findConnectors` in interface `Service`

#### removeConnector

    public void removeConnector(Connector connector)

Remove the specified Connector from the set associated from this Service. The removed Connector will also be disassociated from our Container.

Specified by:
  `removeConnector` in interface `Service`
Parameters:
  `connector` - The Connector to be removed

#### removePropertyChangeListener

    public void removePropertyChangeListener(PropertyChangeListener listener)

Remove a property change listener from this component.

Parameters:
  `listener` - The listener to remove

#### toString

    public String toString()

Return a String representation of this component.

Overrides:
  `toString` in class `Object`

#### addExecutor

    public void addExecutor(Executor ex)

Adds a named executor to the service

Specified by:
  `addExecutor` in interface `Service`
Parameters:
  `ex` - Executor

#### findExecutors

    public Executor[] findExecutors()

Retrieves all executors

Specified by:
  `findExecutors` in interface `Service`
Returns:
  Executor[]

#### getExecutor

    public Executor getExecutor(String executorName)

Retrieves executor by name, null if not found

Specified by:
  `getExecutor` in interface `Service`
Parameters:
  `executorName` - String
Returns:
  Executor

#### removeExecutor

    public void removeExecutor(Executor ex)

Removes an executor from the service

Specified by:
  `removeExecutor` in interface `Service`
Parameters:
  `ex` - Executor

#### startInternal

    protected void startInternal()
                          throws LifecycleException

Start nested components (`Executor`s, `Connector`s and `Container`s) and implement the requirements of `LifecycleBase.startInternal()`.

Specified by:
  `startInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### stopInternal

    protected void stopInternal()
                         throws LifecycleException

Stop nested components (`Executor`s, `Connector`s and `Container`s) and implement the requirements of `LifecycleBase.stopInternal()`.

Specified by:
  `stopInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that needs to be reported

#### initInternal

    protected void initInternal()
                         throws LifecycleException

Invoke a pre-startup initialization. This is used to allow connectors to bind to restricted ports under Unix operating environments.

Overrides:
  `initInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException`

#### destroyInternal

    protected void destroyInternal()
                            throws LifecycleException

Description copied from class: `LifecycleMBeanBase`
Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.

Overrides:
  `destroyInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException`

#### getParentClassLoader

    public ClassLoader getParentClassLoader()

Return the parent class loader for this component.

Specified by:
  `getParentClassLoader` in interface `Service`

#### setParentClassLoader

    public void setParentClassLoader(ClassLoader parent)

Set the parent class loader for this server.

Specified by:
  `setParentClassLoader` in interface `Service`
Parameters:
  `parent` - The new parent class loader

#### getDomainInternal

    protected String getDomainInternal()

Description copied from class: `LifecycleMBeanBase`
Method implemented by sub-classes to identify the domain in which MBeans should be registered.

Specified by:
  `getDomainInternal` in class `LifecycleMBeanBase`
Returns:
  The name of the domain to use to register MBeans.

#### getObjectNameKeyProperties

    public final String getObjectNameKeyProperties()

Description copied from class: `LifecycleMBeanBase`
Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.

Specified by:
  `getObjectNameKeyProperties` in class `LifecycleMBeanBase`
Returns:
  The string representation of the key properties component of the desired `ObjectName`