Class 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
  • 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()
      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:
    • 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:
    • 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
    • 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 (Services) 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 (Services) 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