Package org.apache.catalina.core

## Class StandardServer

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

- All Implemented Interfaces:
    `MBeanRegistration`, `JmxEnabled`, `Lifecycle`, `Server`

      public final class StandardServer
      extends LifecycleMBeanBase
      implements Server

  Standard implementation of the Server interface, available for use (but not required) when deploying and starting Catalina.
  Author:
    Craig R. McClanahan

- - ### Nested Class Summary

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

      `Lifecycle.SingleUse`

  - ### Field Summary

    - ### 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
    --- | ---
    `StandardServer()` | Construct a default instance of this class.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addPropertyChangeListener​(PropertyChangeListener listener)` | Add a property change listener to this component.
    `void` | `addService​(Service service)` | Add a new Service to the set of defined Services.
    `void` | `await()` | Wait until a proper shutdown command is received, then return.
    `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.
    `Service` | `findService​(String name)` | Find the specified Service
    `Service[]` | `findServices()` |
    `String` | `getAddress()` | Return the address on which we listen to for shutdown commands.
    `Catalina` | `getCatalina()` | Return the outer Catalina startup/shutdown component if present.
    `File` | `getCatalinaBase()` |
    `File` | `getCatalinaHome()` |
    `protected String` | `getDomainInternal()` | Obtain the MBean domain for this server.
    `Context` | `getGlobalNamingContext()` | Return the global naming resources context.
    `NamingResourcesImpl` | `getGlobalNamingResources()` | Return the global naming resources.
    `Object` | `getNamingToken()` |
    `protected 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.
    `int` | `getPeriodicEventDelay()` |
    `int` | `getPort()` | Return the port number we listen to for shutdown commands.
    `int` | `getPortOffset()` | Get the number that offsets the port used for shutdown commands.
    `int` | `getPortWithOffset()` | Get the actual port on which server is listening for the shutdown commands.
    `String` | `getServerBuilt()` | Return the current server built timestamp
    `String` | `getServerInfo()` | Report the current Tomcat Server Release number
    `String` | `getServerNumber()` | Return the current server's version number.
    `ObjectName[]` | `getServiceNames()` |
    `String` | `getShutdown()` | Return the shutdown command string we are waiting for.
    `ScheduledExecutorService` | `getUtilityExecutor()` |
    `int` | `getUtilityThreads()` | Get the utility thread count.
    `boolean` | `getUtilityThreadsAsDaemon()` | Get if the utility threads are daemon threads.
    `protected void` | `initInternal()` | Invoke a pre-startup initialization.
    `void` | `removePropertyChangeListener​(PropertyChangeListener listener)` | Remove a property change listener from this component.
    `void` | `removeService​(Service service)` | Remove the specified Service from the set associated from this Server.
    `void` | `setAddress​(String address)` | Set the address on which we listen to for shutdown commands.
    `void` | `setCatalina​(Catalina catalina)` | Set the outer Catalina startup/shutdown component if present.
    `void` | `setCatalinaBase​(File catalinaBase)` | Set the configured base (instance) directory.
    `void` | `setCatalinaHome​(File catalinaHome)` | Set the configured home (binary) directory.
    `void` | `setGlobalNamingContext​(Context globalNamingContext)` | Set the global naming resources context.
    `void` | `setGlobalNamingResources​(NamingResourcesImpl globalNamingResources)` | Set the global naming resources.
    `void` | `setParentClassLoader​(ClassLoader parent)` | Set the parent class loader for this server.
    `void` | `setPeriodicEventDelay​(int periodicEventDelay)` | Set the new period between two lifecycle events in seconds.
    `void` | `setPort​(int port)` | Set the port number we listen to for shutdown commands.
    `void` | `setPortOffset​(int portOffset)` | Set the number that offsets the server port used for shutdown commands.
    `void` | `setShutdown​(String shutdown)` | Set the shutdown command we are waiting for.
    `void` | `setUtilityThreads​(int utilityThreads)` | Set the utility thread count.
    `void` | `setUtilityThreadsAsDaemon​(boolean utilityThreadsAsDaemon)` | Set the utility threads daemon flag.
    `protected void` | `startInternal()` | Start nested components (`Service`s) and implement the requirements of `LifecycleBase.startInternal()`.
    `void` | `stopAwait()` |
    `protected void` | `stopInternal()` | Stop nested components (`Service`s) and implement the requirements of `LifecycleBase.stopInternal()`.
    `void` | `storeConfig()` | Write the configuration information for this entire `Server` out to the server.xml configuration file.
    `void` | `storeContext​(Context context)` | Write the configuration information for `Context` out to the specified configuration file.
    `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, 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`

- - ### Constructor Detail

    - #### StandardServer

          public StandardServer()

      Construct a default instance of this class.

  - ### Method Detail

    - #### getNamingToken

          public Object getNamingToken()

      Specified by:
        `getNamingToken` in interface `Server`
      Returns:
        the token necessary for operations on the associated JNDI naming context.

    - #### getGlobalNamingContext

          public Context getGlobalNamingContext()

      Return the global naming resources context.
      Specified by:
        `getGlobalNamingContext` in interface `Server`
      Returns:
        the global naming resources context.

    - #### setGlobalNamingContext

          public void setGlobalNamingContext​(Context globalNamingContext)

      Set the global naming resources context.
      Parameters:
        `globalNamingContext` - The new global naming resource context

    - #### getGlobalNamingResources

          public NamingResourcesImpl getGlobalNamingResources()

      Return the global naming resources.
      Specified by:
        `getGlobalNamingResources` in interface `Server`
      Returns:
        the global naming resources.

    - #### setGlobalNamingResources

          public void setGlobalNamingResources​(NamingResourcesImpl globalNamingResources)

      Set the global naming resources.
      Specified by:
        `setGlobalNamingResources` in interface `Server`
      Parameters:
        `globalNamingResources` - The new global naming resources

    - #### getServerInfo

          public String getServerInfo()

      Report the current Tomcat Server Release number
      Returns:
        Tomcat release identifier

    - #### getServerBuilt

          public String getServerBuilt()

      Return the current server built timestamp
      Returns:
        server built timestamp.

    - #### getServerNumber

          public String getServerNumber()

      Return the current server's version number.
      Returns:
        server's version number.

    - #### getPort

          public int getPort()

      Return the port number we listen to for shutdown commands.
      Specified by:
        `getPort` in interface `Server`
      Returns:
        the port number we listen to for shutdown commands.
      See Also:
        `Server.getPortOffset()`, `Server.getPortWithOffset()`

    - #### setPort

          public void setPort​(int port)

      Set the port number we listen to for shutdown commands.
      Specified by:
        `setPort` in interface `Server`
      Parameters:
        `port` - The new port number
      See Also:
        `Server.setPortOffset(int)`

    - #### getPortOffset

          public int getPortOffset()

      Description copied from interface: `Server`
      Get the number that offsets the port used for shutdown commands. For example, if port is 8005, and portOffset is 1000, the server listens at 9005.
      Specified by:
        `getPortOffset` in interface `Server`
      Returns:
        the port offset

    - #### setPortOffset

          public void setPortOffset​(int portOffset)

      Description copied from interface: `Server`
      Set the number that offsets the server port used for shutdown commands. For example, if port is 8005, and you set portOffset to 1000, connector listens at 9005.
      Specified by:
        `setPortOffset` in interface `Server`
      Parameters:
        `portOffset` - sets the port offset

    - #### getPortWithOffset

          public int getPortWithOffset()

      Description copied from interface: `Server`
      Get the actual port on which server is listening for the shutdown commands. If you do not set port offset, port is returned. If you set port offset, port offset + port is returned.
      Specified by:
        `getPortWithOffset` in interface `Server`
      Returns:
        the port with offset

    - #### getAddress

          public String getAddress()

      Return the address on which we listen to for shutdown commands.
      Specified by:
        `getAddress` in interface `Server`
      Returns:
        the address on which we listen to for shutdown commands.

    - #### setAddress

          public void setAddress​(String address)

      Set the address on which we listen to for shutdown commands.
      Specified by:
        `setAddress` in interface `Server`
      Parameters:
        `address` - The new address

    - #### getShutdown

          public String getShutdown()

      Return the shutdown command string we are waiting for.
      Specified by:
        `getShutdown` in interface `Server`
      Returns:
        the shutdown command string we are waiting for.

    - #### setShutdown

          public void setShutdown​(String shutdown)

      Set the shutdown command we are waiting for.
      Specified by:
        `setShutdown` in interface `Server`
      Parameters:
        `shutdown` - The new shutdown command

    - #### getCatalina

          public Catalina getCatalina()

      Return the outer Catalina startup/shutdown component if present.
      Specified by:
        `getCatalina` in interface `Server`
      Returns:
        the outer Catalina startup/shutdown component if present.

    - #### setCatalina

          public void setCatalina​(Catalina catalina)

      Set the outer Catalina startup/shutdown component if present.
      Specified by:
        `setCatalina` in interface `Server`
      Parameters:
        `catalina` - the outer Catalina component

    - #### getUtilityThreads

          public int getUtilityThreads()

      Description copied from interface: `Server`
      Get the utility thread count.
      Specified by:
        `getUtilityThreads` in interface `Server`
      Returns:
        the thread count

    - #### setUtilityThreads

          public void setUtilityThreads​(int utilityThreads)

      Description copied from interface: `Server`
      Set the utility thread count.
      Specified by:
        `setUtilityThreads` in interface `Server`
      Parameters:
        `utilityThreads` - the new thread count

    - #### getUtilityThreadsAsDaemon

          public boolean getUtilityThreadsAsDaemon()

      Get if the utility threads are daemon threads.
      Returns:
        the threads daemon flag

    - #### setUtilityThreadsAsDaemon

          public void setUtilityThreadsAsDaemon​(boolean utilityThreadsAsDaemon)

      Set the utility threads daemon flag. The default value is true.
      Parameters:
        `utilityThreadsAsDaemon` - the new thread daemon flag

    - #### getPeriodicEventDelay

          public int getPeriodicEventDelay()

      Returns:
        The period between two lifecycle events, in seconds

    - #### setPeriodicEventDelay

          public void setPeriodicEventDelay​(int periodicEventDelay)

      Set the new period between two lifecycle events in seconds.
      Parameters:
        `periodicEventDelay` - The period in seconds, negative or zero will disable events

    - #### addService

          public void addService​(Service service)

      Add a new Service to the set of defined Services.
      Specified by:
        `addService` in interface `Server`
      Parameters:
        `service` - The Service to be added

    - #### stopAwait

          public void stopAwait()

    - #### await

          public void await()

      Wait until a proper shutdown command is received, then return. This keeps the main thread alive - the thread pool listening for http connections is daemon threads.
      Specified by:
        `await` in interface `Server`

    - #### findService

          public Service findService​(String name)

      Description copied from interface: `Server`
      Find the specified Service
      Specified by:
        `findService` in interface `Server`
      Parameters:
        `name` - Name of the Service to be returned
      Returns:
        the specified Service (if it exists); otherwise return `null`.

    - #### findServices

          public Service[] findServices()

      Specified by:
        `findServices` in interface `Server`
      Returns:
        The array of Services defined within this Server.

    - #### getServiceNames

          public ObjectName[] getServiceNames()

      Returns:
        the JMX service names.

    - #### removeService

          public void removeService​(Service service)

      Remove the specified Service from the set associated from this Server.
      Specified by:
        `removeService` in interface `Server`
      Parameters:
        `service` - The Service to be removed

    - #### getCatalinaBase

          public File getCatalinaBase()

      Specified by:
        `getCatalinaBase` in interface `Server`
      Returns:
        the configured base (instance) directory. Note that home and base may be the same (and are by default). If this is not set the value returned by `Server.getCatalinaHome()` will be used.

    - #### setCatalinaBase

          public void setCatalinaBase​(File catalinaBase)

      Description copied from interface: `Server`
      Set the configured base (instance) directory. Note that home and base may be the same (and are by default).
      Specified by:
        `setCatalinaBase` in interface `Server`
      Parameters:
        `catalinaBase` - the configured base directory

    - #### getCatalinaHome

          public File getCatalinaHome()

      Specified by:
        `getCatalinaHome` in interface `Server`
      Returns:
        the configured home (binary) directory. Note that home and base may be the same (and are by default).

    - #### setCatalinaHome

          public void setCatalinaHome​(File catalinaHome)

      Description copied from interface: `Server`
      Set the configured home (binary) directory. Note that home and base may be the same (and are by default).
      Specified by:
        `setCatalinaHome` in interface `Server`
      Parameters:
        `catalinaHome` - the configured home directory

    - #### addPropertyChangeListener

          public void addPropertyChangeListener​(PropertyChangeListener listener)

      Add a property change listener to this component.
      Parameters:
        `listener` - The listener to add

    - #### 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`

    - #### storeConfig

          public void storeConfig()
                           throws InstanceNotFoundException,
                                  MBeanException

      Write the configuration information for this entire `Server` out to the server.xml configuration file.
      Throws:
        `InstanceNotFoundException` - if the managed resource object cannot be found
        `MBeanException` - if the initializer of the object throws an exception, or persistence is not supported
        `RuntimeOperationsException` - if an exception is reported by the persistence mechanism

    - #### storeContext

          public void storeContext​(Context context)
                            throws InstanceNotFoundException,
                                   MBeanException

      Write the configuration information for `Context` out to the specified configuration file.
      Parameters:
        `context` - the context which should save its configuration
      Throws:
        `InstanceNotFoundException` - if the managed resource object cannot be found
        `MBeanException` - if the initializer of the object throws an exception or persistence is not supported
        `RuntimeOperationsException` - if an exception is reported by the persistence mechanism

    - #### startInternal

          protected void startInternal()
                                throws LifecycleException

      Start nested components (`Service`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 (`Service`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 ClassLoader getParentClassLoader()

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

    - #### setParentClassLoader

          public void setParentClassLoader​(ClassLoader parent)

      Set the parent class loader for this server.
      Specified by:
        `setParentClassLoader` in interface `Server`
      Parameters:
        `parent` - The new parent class loader

    - #### getDomainInternal

          protected String getDomainInternal()

      Obtain the MBean domain for this server. The domain is obtained using the following search order:
      1. Name of first `Engine`.
      2. Name of first `Service`.
      Specified by:
        `getDomainInternal` in class `LifecycleMBeanBase`
      Returns:
        The name of the domain to use to register MBeans.

    - #### getObjectNameKeyProperties

          protected 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`

    - #### getUtilityExecutor

          public ScheduledExecutorService getUtilityExecutor()

      Specified by:
        `getUtilityExecutor` in interface `Server`
      Returns:
        the utility executor managed by the Service.