Package 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:
    `javax.management.MBeanRegistration`, `JmxEnabled`, `Lifecycle`, `Service`

      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

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      `Lifecycle.SingleUse`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Connector[]` | `connectors` | The set of Connectors associated with this Service.
    `protected java.util.ArrayList<Executor>` | `executors` | The list of executors held by the service.
    `protected Mapper` | `mapper` | Mapper.
    `protected MapperListener` | `mapperListener` | Mapper listener.
    `protected java.beans.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 | Description
    --- | ---
    `StandardService()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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​(java.beans.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
    `javax.management.ObjectName[]` | `getConnectorNames()` |
    `Engine` | `getContainer()` |
    `protected java.lang.String` | `getDomainInternal()` | Method implemented by sub-classes to identify the domain in which MBeans should be registered.
    `Executor` | `getExecutor​(java.lang.String executorName)` | Retrieves executor by name, null if not found
    `long` | `getGracefulStopAwaitMillis()` |
    `Mapper` | `getMapper()` |
    `java.lang.String` | `getName()` | Return the name of this Service.
    `java.lang.String` | `getObjectNameKeyProperties()` | Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
    `java.lang.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​(java.beans.PropertyChangeListener listener)` | Remove a property change listener from this component.
    `void` | `setContainer​(Engine engine)` | Set the `Engine` that handles requests for all `Connectors` associated with this Service.
    `void` | `setGracefulStopAwaitMillis​(long gracefulStopAwaitMillis)` |
    `void` | `setName​(java.lang.String name)` | Set the name of this Service.
    `void` | `setParentClassLoader​(java.lang.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()`.
    `java.lang.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, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, 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`

    - ### Methods inherited from interface org.apache.catalina.Service

      `getDomain`

- - ### Field Detail

    - #### support

          protected final java.beans.PropertyChangeSupport support

      The property change support for this component.

    - #### connectors

          protected Connector[] connectors

      The set of Connectors associated with this Service.

    - #### executors

          protected final java.util.ArrayList<Executor> executors

      The list of executors held by the service.

    - #### mapper

          protected final Mapper mapper

      Mapper.

    - #### mapperListener

          protected final MapperListener mapperListener

      Mapper listener.

  - ### Constructor Detail

    - #### StandardService

          public StandardService()

  - ### Method Detail

    - #### getGracefulStopAwaitMillis

          public long getGracefulStopAwaitMillis()

    - #### setGracefulStopAwaitMillis

          public void setGracefulStopAwaitMillis​(long gracefulStopAwaitMillis)

    - #### getMapper

          public Mapper getMapper()

      Specified by:
        `getMapper` in interface `Service`
      Returns:
        the mapper associated with this Service.

    - #### getContainer

          public Engine getContainer()

      Specified by:
        `getContainer` in interface `Service`
      Returns:
        the `Engine` that handles requests for all `Connectors` associated with this Service.

    - #### setContainer

          public void setContainer​(Engine engine)

      Description copied from interface: `Service`
      Set the `Engine` that handles requests for all `Connectors` associated with this Service.
      Specified by:
        `setContainer` in interface `Service`
      Parameters:
        `engine` - The new Engine

    - #### getName

          public java.lang.String getName()

      Return the name of this Service.
      Specified by:
        `getName` in interface `Service`
      Returns:
        the name of this Service.

    - #### setName

          public void setName​(java.lang.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`
      Returns:
        the `Server` with which we are associated (if any).

    - #### 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 javax.management.ObjectName[] getConnectorNames()

    - #### addPropertyChangeListener

          public void addPropertyChangeListener​(java.beans.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`
      Returns:
        the set of associated Connectors

    - #### 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​(java.beans.PropertyChangeListener listener)

      Remove a property change listener from this component.
      Parameters:
        `listener` - The listener to remove

    - #### toString

          public java.lang.String toString()

      Return a String representation of this component.
      Overrides:
        `toString` in class `java.lang.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​(java.lang.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` - If the initialisation fails

    - #### 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` - If the destruction fails

    - #### getParentClassLoader

          public java.lang.ClassLoader getParentClassLoader()

      Return the parent class loader for this component.
      Specified by:
        `getParentClassLoader` in interface `Service`
      Returns:
        the parent class loader for this component. If not set, return `Service.getServer()` `Server.getParentClassLoader()`. If no server has been set, return the system class loader.

    - #### setParentClassLoader

          public void setParentClassLoader​(java.lang.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 java.lang.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 java.lang.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`