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

## Method Summary

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 implement this method to perform any instance destruction required.
`Service`
`findService(String name)`
Find the specified Service
`Service[]`
`findServices()`
`String`
`getAddress()`
`Catalina`
`getCatalina()`
`File`
`getCatalinaBase()`
`File`
`getCatalinaHome()`
`protected String`
`getDomainInternal()`
Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`Context`
`getGlobalNamingContext()`
`NamingResourcesImpl`
`getGlobalNamingResources()`
`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()`
`int`
`getPeriodicEventDelay()`
`int`
`getPort()`
`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()`
`ScheduledExecutorService`
`getUtilityExecutor()`
`int`
`getUtilityThreads()`
Get the utility thread count.
`boolean`
`getUtilityThreadsAsDaemon()`
Get if the utility threads are daemon threads.
`protected void`
`initInternal()`
Sub-classes implement this method to perform any instance initialisation required.
`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()`
Sub-classes must ensure that the state is changed to `LifecycleState.STARTING` during the execution of this method.
`void`
`stopAwait()`
`protected void`
`stopInternal()`
Sub-classes must ensure that the state is changed to `LifecycleState.STOPPING` during the execution of this method.
`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()`

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

### StandardServer

public StandardServer()
Construct a default instance of this class.

## Method Details

### 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()

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()

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

### setGlobalNamingResources

public void setGlobalNamingResources(NamingResourcesImpl globalNamingResources)
Description copied from interface: `Server`
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()

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)
Description copied from interface: `Server`
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()

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

### setAddress

public void setAddress(String address)
Description copied from interface: `Server`
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()

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

### setShutdown

public void setShutdown(String shutdown)
Description copied from interface: `Server`
Set the shutdown command we are waiting for.

Specified by:
  `setShutdown` in interface `Server`
Parameters:
  `shutdown` - The new shutdown command

### getCatalina

public Catalina getCatalina()

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

### setCatalina

public void setCatalina(Catalina catalina)
Description copied from interface: `Server`
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)
Description copied from interface: `Server`
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()
Description copied from interface: `Server`
Wait until a proper shutdown command is received, then return.

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, or `null` if none exists.

### findServices

public Service[] findServices()

Specified by:
  `findServices` in interface `Server`
Returns:
  the set of Services defined within this Server.

### getServiceNames

public ObjectName[] getServiceNames()

Returns:
  the JMX service names.

### removeService

public void removeService(Service service)
Description copied from interface: `Server`
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()

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
Description copied from class: `LifecycleBase`
Sub-classes must ensure that the state is changed to `LifecycleState.STARTING` during the execution of this method. Changing state will trigger the `Lifecycle.START_EVENT` event. If a component fails to start it may either throw a `LifecycleException` which will cause it's parent to fail to start or it can place itself in the error state in which case `LifecycleBase.stop()` will be called on the failed component but the parent component will continue to start normally.

Specified by:
  `startInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - Start error occurred

### stopInternal

protected void stopInternal() throws LifecycleException
Description copied from class: `LifecycleBase`
Sub-classes must ensure that the state is changed to `LifecycleState.STOPPING` during the execution of this method. Changing state will trigger the `Lifecycle.STOP_EVENT` event.

Specified by:
  `stopInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - Stop error occurred

### initInternal

protected void initInternal() throws LifecycleException
Sub-classes implement this method to perform any instance initialisation required.

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: `LifecycleBase`
Sub-classes implement this method to perform any instance destruction required.

Overrides:
  `destroyInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException` - If the destruction fails

### getParentClassLoader

public ClassLoader getParentClassLoader()

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)
Description copied from interface: `Server`
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()
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 MBean domain for this server. The domain is obtained using the following search order:
  1. Name of first `Engine`.
  2. Name of first `Service`.

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