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:
javax.management.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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddPropertyChangeListener(java.beans.PropertyChangeListener listener)Add a property change listener to this component.voidaddService(Service service)Add a new Service to the set of defined Services.voidawait()Wait until a proper shutdown command is received, then return.protected voiddestroyInternal()Sub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.ServicefindService(java.lang.String name)Find the specified ServiceService[]findServices()java.lang.StringgetAddress()Return the address on which we listen to for shutdown commands.CatalinagetCatalina()Return the outer Catalina startup/shutdown component if present.java.io.FilegetCatalinaBase()java.io.FilegetCatalinaHome()protected java.lang.StringgetDomainInternal()Obtain the MBean domain for this server.javax.naming.ContextgetGlobalNamingContext()Return the global naming resources context.NamingResourcesImplgetGlobalNamingResources()Return the global naming resources.java.lang.ObjectgetNamingToken()protected java.lang.StringgetObjectNameKeyProperties()Allow sub-classes to specify the key properties component of theObjectNamethat will be used to register this component.java.lang.ClassLoadergetParentClassLoader()Return the parent class loader for this component.intgetPort()Return the port number we listen to for shutdown commands.intgetPortOffset()Get the number that offsets the port used for shutdown commands.intgetPortWithOffset()Get the actual port on which server is listening for the shutdown commands.java.lang.StringgetServerBuilt()Return the current server built timestampjava.lang.StringgetServerInfo()Report the current Tomcat Server Release numberjava.lang.StringgetServerNumber()Return the current server's version number.javax.management.ObjectName[]getServiceNames()java.lang.StringgetShutdown()Return the shutdown command string we are waiting for.protected voidinitInternal()Invoke a pre-startup initialization.voidremovePropertyChangeListener(java.beans.PropertyChangeListener listener)Remove a property change listener from this component.voidremoveService(Service service)Remove the specified Service from the set associated from this Server.voidsetAddress(java.lang.String address)Set the address on which we listen to for shutdown commands.voidsetCatalina(Catalina catalina)Set the outer Catalina startup/shutdown component if present.voidsetCatalinaBase(java.io.File catalinaBase)Set the configured base (instance) directory.voidsetCatalinaHome(java.io.File catalinaHome)Set the configured home (binary) directory.voidsetGlobalNamingContext(javax.naming.Context globalNamingContext)Set the global naming resources context.voidsetGlobalNamingResources(NamingResourcesImpl globalNamingResources)Set the global naming resources.voidsetParentClassLoader(java.lang.ClassLoader parent)Set the parent class loader for this server.voidsetPort(int port)Set the port number we listen to for shutdown commands.voidsetPortOffset(int portOffset)Set the number that offsets the server port used for shutdown commands.voidsetShutdown(java.lang.String shutdown)Set the shutdown command we are waiting for.protected voidstartInternal()Start nested components (Services) and implement the requirements ofLifecycleBase.startInternal().voidstopAwait()protected voidstopInternal()Stop nested components (Services) and implement the requirements ofLifecycleBase.stopInternal().voidstoreConfig()Write the configuration information for this entireServerout to the server.xml configuration file.voidstoreContext(Context context)Write the configuration information forContextout to the specified configuration file.java.lang.StringtoString()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
-
-
-
-
Method Detail
-
getNamingToken
public java.lang.Object getNamingToken()
- Specified by:
getNamingTokenin interfaceServer- Returns:
- the token necessary for operations on the associated JNDI naming context.
-
getGlobalNamingContext
public javax.naming.Context getGlobalNamingContext()
Return the global naming resources context.- Specified by:
getGlobalNamingContextin interfaceServer- Returns:
- the global naming resources context.
-
setGlobalNamingContext
public void setGlobalNamingContext(javax.naming.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:
getGlobalNamingResourcesin interfaceServer- Returns:
- the global naming resources.
-
setGlobalNamingResources
public void setGlobalNamingResources(NamingResourcesImpl globalNamingResources)
Set the global naming resources.- Specified by:
setGlobalNamingResourcesin interfaceServer- Parameters:
globalNamingResources- The new global naming resources
-
getServerInfo
public java.lang.String getServerInfo()
Report the current Tomcat Server Release number- Returns:
- Tomcat release identifier
-
getServerBuilt
public java.lang.String getServerBuilt()
Return the current server built timestamp- Returns:
- server built timestamp.
-
getServerNumber
public java.lang.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:
getPortin interfaceServer- 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:
setPortin interfaceServer- Parameters:
port- The new port number- See Also:
Server.setPortOffset(int)
-
getPortOffset
public int getPortOffset()
Description copied from interface:ServerGet 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:
getPortOffsetin interfaceServer- Returns:
- the port offset
-
setPortOffset
public void setPortOffset(int portOffset)
Description copied from interface:ServerSet 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:
setPortOffsetin interfaceServer- Parameters:
portOffset- sets the port offset
-
getPortWithOffset
public int getPortWithOffset()
Description copied from interface:ServerGet 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:
getPortWithOffsetin interfaceServer- Returns:
- the port with offset
-
getAddress
public java.lang.String getAddress()
Return the address on which we listen to for shutdown commands.- Specified by:
getAddressin interfaceServer- Returns:
- the address on which we listen to for shutdown commands.
-
setAddress
public void setAddress(java.lang.String address)
Set the address on which we listen to for shutdown commands.- Specified by:
setAddressin interfaceServer- Parameters:
address- The new address
-
getShutdown
public java.lang.String getShutdown()
Return the shutdown command string we are waiting for.- Specified by:
getShutdownin interfaceServer- Returns:
- the shutdown command string we are waiting for.
-
setShutdown
public void setShutdown(java.lang.String shutdown)
Set the shutdown command we are waiting for.- Specified by:
setShutdownin interfaceServer- Parameters:
shutdown- The new shutdown command
-
getCatalina
public Catalina getCatalina()
Return the outer Catalina startup/shutdown component if present.- Specified by:
getCatalinain interfaceServer- 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:
setCatalinain interfaceServer- Parameters:
catalina- the outer Catalina component
-
addService
public void addService(Service service)
Add a new Service to the set of defined Services.- Specified by:
addServicein interfaceServer- 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.
-
findService
public Service findService(java.lang.String name)
Description copied from interface:ServerFind the specified Service- Specified by:
findServicein interfaceServer- 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:
findServicesin interfaceServer- Returns:
- the set of Services defined within this Server.
-
getServiceNames
public javax.management.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:
removeServicein interfaceServer- Parameters:
service- The Service to be removed
-
getCatalinaBase
public java.io.File getCatalinaBase()
- Specified by:
getCatalinaBasein interfaceServer- 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(java.io.File catalinaBase)
Description copied from interface:ServerSet the configured base (instance) directory. Note that home and base may be the same (and are by default).- Specified by:
setCatalinaBasein interfaceServer- Parameters:
catalinaBase- the configured base directory
-
getCatalinaHome
public java.io.File getCatalinaHome()
- Specified by:
getCatalinaHomein interfaceServer- Returns:
- the configured home (binary) directory. Note that home and base may be the same (and are by default).
-
setCatalinaHome
public void setCatalinaHome(java.io.File catalinaHome)
Description copied from interface:ServerSet the configured home (binary) directory. Note that home and base may be the same (and are by default).- Specified by:
setCatalinaHomein interfaceServer- Parameters:
catalinaHome- the configured home directory
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a property change listener to this component.- Parameters:
listener- The listener to add
-
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:
toStringin classjava.lang.Object
-
storeConfig
public void storeConfig() throws javax.management.InstanceNotFoundException, javax.management.MBeanExceptionWrite the configuration information for this entireServerout to the server.xml configuration file.- Throws:
javax.management.InstanceNotFoundException- if the managed resource object cannot be foundjavax.management.MBeanException- if the initializer of the object throws an exception, or persistence is not supportedjavax.management.RuntimeOperationsException- if an exception is reported by the persistence mechanism
-
storeContext
public void storeContext(Context context) throws javax.management.InstanceNotFoundException, javax.management.MBeanException
Write the configuration information forContextout to the specified configuration file.- Parameters:
context- the context which should save its configuration- Throws:
javax.management.InstanceNotFoundException- if the managed resource object cannot be foundjavax.management.MBeanException- if the initializer of the object throws an exception or persistence is not supportedjavax.management.RuntimeOperationsException- if an exception is reported by the persistence mechanism
-
startInternal
protected void startInternal() throws LifecycleExceptionStart nested components (Services) and implement the requirements ofLifecycleBase.startInternal().- Specified by:
startInternalin classLifecycleBase- Throws:
LifecycleException- if this component detects a fatal error that prevents this component from being used
-
stopInternal
protected void stopInternal() throws LifecycleExceptionStop nested components (Services) and implement the requirements ofLifecycleBase.stopInternal().- Specified by:
stopInternalin classLifecycleBase- Throws:
LifecycleException- if this component detects a fatal error that needs to be reported
-
initInternal
protected void initInternal() throws LifecycleExceptionInvoke a pre-startup initialization. This is used to allow connectors to bind to restricted ports under Unix operating environments.- Overrides:
initInternalin classLifecycleMBeanBase- Throws:
LifecycleException- If the initialisation fails
-
destroyInternal
protected void destroyInternal() throws LifecycleExceptionDescription copied from class:LifecycleMBeanBaseSub-classes wishing to perform additional clean-up should override this method, ensuring that super.destroyInternal() is the last call in the overriding method.- Overrides:
destroyInternalin classLifecycleMBeanBase- Throws:
LifecycleException- If the destruction fails
-
getParentClassLoader
public java.lang.ClassLoader getParentClassLoader()
Return the parent class loader for this component.- Specified by:
getParentClassLoaderin interfaceServer- 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(java.lang.ClassLoader parent)
Set the parent class loader for this server.- Specified by:
setParentClassLoaderin interfaceServer- Parameters:
parent- The new parent class loader
-
getDomainInternal
protected java.lang.String getDomainInternal()
Obtain the MBean domain for this server. The domain is obtained using the following search order:- Specified by:
getDomainInternalin classLifecycleMBeanBase- Returns:
- The name of the domain to use to register MBeans.
-
getObjectNameKeyProperties
protected java.lang.String getObjectNameKeyProperties()
Description copied from class:LifecycleMBeanBaseAllow sub-classes to specify the key properties component of theObjectNamethat will be used to register this component.- Specified by:
getObjectNameKeyPropertiesin classLifecycleMBeanBase- Returns:
- The string representation of the key properties component of the
desired
ObjectName
-
-