Package org.apache.catalina.core

## Class StandardHost

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

All Implemented Interfaces:
  `javax.management.MBeanRegistration`, `Container`, `Host`, `JmxEnabled`, `Lifecycle`

    public class StandardHost
    extends ContainerBase
    implements Host

Standard implementation of the Host interface. Each child container must be a Context implementation to process the requests directed to a particular web application.

Author:
  Craig R. McClanahan, Remy Maucherat

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.catalina.core.ContainerBase

`ContainerBase.ContainerBackgroundProcessor, ContainerBase.ContainerBackgroundProcessorMonitor, ContainerBase.PrivilegedAddChild`

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

`Lifecycle.SingleUse`

### Field Summary

### Fields inherited from class org.apache.catalina.core.ContainerBase

`accessLog, backgroundProcessorDelay, backgroundProcessorFuture, children, cluster, listeners, logger, logName, monitorFuture, name, parent, parentClassLoader, pipeline, sm, startChildren, startStopExecutor, support`

### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

`mserver`

### Fields inherited from interface org.apache.catalina.Container

`ADD_CHILD_EVENT, ADD_VALVE_EVENT, REMOVE_CHILD_EVENT, REMOVE_VALVE_EVENT`

### Fields inherited from interface org.apache.catalina.Host

`ADD_ALIAS_EVENT, REMOVE_ALIAS_EVENT`

### 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
`StandardHost()` Create a new StandardHost component with the default basic Valve.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addAlias​(java.lang.String alias)` Add an alias name that should be mapped to this same Host.
`void` `addChild​(Container child)` Add a child Container, only if the proposed child is an implementation of Context.
`java.lang.String[]` `findAliases()`
`java.lang.String[]` `findReloadedContextMemoryLeaks()` Attempt to identify the contexts that have a class loader memory leak.
`java.lang.String[]` `getAliases()`
`java.lang.String` `getAppBase()`
`java.io.File` `getAppBaseFile()`
`boolean` `getAutoDeploy()`
`java.io.File` `getConfigBaseFile()` (
`java.lang.String` `getConfigClass()`
`java.lang.String` `getContextClass()`
`boolean` `getCreateDirs()` Returns `true` if the Host will attempt to create directories for appBase and xmlBase unless they already exist.
`java.lang.String` `getDeployIgnore()`
`java.util.regex.Pattern` `getDeployIgnorePattern()`
`boolean` `getDeployOnStartup()`
`java.lang.String` `getErrorReportValveClass()`
`java.lang.String` `getName()` Return a name string (suitable for use by humans) that describes this Container.
`protected 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.util.concurrent.ExecutorService` `getStartStopExecutor()`
`boolean` `getUndeployOldVersions()`
`java.lang.String[]` `getValveNames()`
`java.lang.String` `getWorkDir()`
`java.lang.String` `getXmlBase()` (
`boolean` `isCopyXML()`
`boolean` `isDeployXML()`
`boolean` `isFailCtxIfServletStartFails()`
`boolean` `isUnpackWARs()`
`void` `removeAlias​(java.lang.String alias)` Remove the specified alias name from the aliases for this Host.
`void` `setAppBase​(java.lang.String appBase)` Set the application root for this Host.
`void` `setAutoDeploy​(boolean autoDeploy)` Set the auto deploy flag value for this host.
`void` `setConfigClass​(java.lang.String configClass)` Set the Java class name of the context configuration class for new web applications.
`void` `setContextClass​(java.lang.String contextClass)` Set the Java class name of the Context implementation class for new web applications.
`void` `setCopyXML​(boolean copyXML)` Set the copy XML config file flag for this component.
`void` `setCreateDirs​(boolean createDirs)` Set to `true` if the Host should attempt to create directories for xmlBase and appBase upon startup
`void` `setDeployIgnore​(java.lang.String deployIgnore)` Set the regular expression that defines the files and directories in the host's `getAppBase()` that will be ignored by the automatic deployment process.
`void` `setDeployOnStartup​(boolean deployOnStartup)` Set the deploy on startup flag value for this host.
`void` `setDeployXML​(boolean deployXML)` Deploy XML Context config files flag mutator.
`void` `setErrorReportValveClass​(java.lang.String errorReportValveClass)` Set the Java class name of the error report valve class for new web applications.
`void` `setFailCtxIfServletStartFails​(boolean failCtxIfServletStartFails)` Change the behavior of Servlet startup errors on web application starts.
`void` `setName​(java.lang.String name)` Set the canonical, fully qualified, name of the virtual host this Container represents.
`void` `setUndeployOldVersions​(boolean undeployOldVersions)` Set to `true` if the Host should automatically undeploy old versions of applications deployed using parallel deployment.
`void` `setUnpackWARs​(boolean unpackWARs)` Unpack WARs flag mutator.
`void` `setWorkDir​(java.lang.String workDir)` Set host work directory base.
`void` `setXmlBase​(java.lang.String xmlBase)` (Set the Xml root for this Host.
`protected void` `startInternal()` Start this component and implement the requirements of `LifecycleBase.startInternal()`.

### Methods inherited from class org.apache.catalina.core.ContainerBase

`addContainerListener, addPropertyChangeListener, addValve, backgroundProcess, destroyInternal, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getCatalinaBase, getCatalinaHome, getChildren, getCluster, getClusterInternal, getDomainInternal, getLogger, getLogName, getMBeanKeyProperties, getParent, getParentClassLoader, getPipeline, getRealm, getRealmInternal, getStartChildren, getStartStopThreads, initInternal, logAccess, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setParent, setParentClassLoader, setRealm, setStartChildren, setStartStopThreads, stopInternal, threadStart, threadStop, 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.Container

`addContainerListener, addPropertyChangeListener, backgroundProcess, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getCatalinaBase, getCatalinaHome, getCluster, getDomain, getLogger, getLogName, getMBeanKeyProperties, getObjectName, getParent, getParentClassLoader, getPipeline, getRealm, getStartStopThreads, logAccess, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setParent, setParentClassLoader, setRealm, setStartStopThreads`

### Methods inherited from interface org.apache.catalina.Lifecycle

`addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

### Constructor Detail

#### StandardHost

    public StandardHost()

Create a new StandardHost component with the default basic Valve.

### Method Detail

#### getUndeployOldVersions

    public boolean getUndeployOldVersions()

Specified by:
  `getUndeployOldVersions` in interface `Host`
Returns:
  `true` of the Host is configured to automatically undeploy old versions of applications deployed using parallel deployment. This only takes effect is `Host.getAutoDeploy()` also returns `true`.

#### setUndeployOldVersions

    public void setUndeployOldVersions​(boolean undeployOldVersions)

Description copied from interface: `Host`
Set to `true` if the Host should automatically undeploy old versions of applications deployed using parallel deployment. This only takes effect if `Host.getAutoDeploy()` returns `true`.

Specified by:
  `setUndeployOldVersions` in interface `Host`
Parameters:
  `undeployOldVersions` - The new value for this flag

#### getStartStopExecutor

    public java.util.concurrent.ExecutorService getStartStopExecutor()

Specified by:
  `getStartStopExecutor` in interface `Host`
Returns:
  the executor that is used for starting and stopping contexts. This is primarily for use by components deploying contexts that want to do this in a multi-threaded manner.

#### getAppBase

    public java.lang.String getAppBase()

Specified by:
  `getAppBase` in interface `Host`
Returns:
  the application root for this Host. This can be an absolute pathname, a relative pathname, or a URL.

#### getAppBaseFile

    public java.io.File getAppBaseFile()

Specified by:
  `getAppBaseFile` in interface `Host`
Returns:
  an absolute `File` for the appBase of this Host. The file will be canonical if possible. There is no guarantee that that the appBase exists.

#### setAppBase

    public void setAppBase​(java.lang.String appBase)

Description copied from interface: `Host`
Set the application root for this Host. This can be an absolute pathname, a relative pathname, or a URL.

Specified by:
  `setAppBase` in interface `Host`
Parameters:
  `appBase` - The new application root

#### getXmlBase

    public java.lang.String getXmlBase()

(

Specified by:
  `getXmlBase` in interface `Host`
Returns:
  the XML root for this Host. This can be an absolute pathname or a relative pathname. If null, the base path defaults to ${catalina.base}/conf/<engine name>/<host name> directory

#### setXmlBase

    public void setXmlBase​(java.lang.String xmlBase)

(Set the Xml root for this Host. This can be an absolute pathname or a relative pathname. If null, the base path defaults to ${catalina.base}/conf/<engine name>/<host name> directory

Specified by:
  `setXmlBase` in interface `Host`
Parameters:
  `xmlBase` - The new XML root

#### getConfigBaseFile

    public java.io.File getConfigBaseFile()

(

Specified by:
  `getConfigBaseFile` in interface `Host`
Returns:
  a default configuration path of this Host. The file will be canonical if possible.

#### getCreateDirs

    public boolean getCreateDirs()

Description copied from interface: `Host`
Returns `true` if the Host will attempt to create directories for appBase and xmlBase unless they already exist.

Specified by:
  `getCreateDirs` in interface `Host`
Returns:
  `true` if the Host will attempt to create directories for appBase and xmlBase unless they already exist.

#### setCreateDirs

    public void setCreateDirs​(boolean createDirs)

Set to `true` if the Host should attempt to create directories for xmlBase and appBase upon startup

Specified by:
  `setCreateDirs` in interface `Host`
Parameters:
  `createDirs` - the new flag value

#### getAutoDeploy

    public boolean getAutoDeploy()

Specified by:
  `getAutoDeploy` in interface `Host`
Returns:
  the value of the auto deploy flag. If true, it indicates that this host's child webapps will be dynamically deployed.

#### setAutoDeploy

    public void setAutoDeploy​(boolean autoDeploy)

Set the auto deploy flag value for this host.

Specified by:
  `setAutoDeploy` in interface `Host`
Parameters:
  `autoDeploy` - The new auto deploy flag

#### getConfigClass

    public java.lang.String getConfigClass()

Specified by:
  `getConfigClass` in interface `Host`
Returns:
  the Java class name of the context configuration class for new web applications.

#### setConfigClass

    public void setConfigClass​(java.lang.String configClass)

Set the Java class name of the context configuration class for new web applications.

Specified by:
  `setConfigClass` in interface `Host`
Parameters:
  `configClass` - The new context configuration class

#### getContextClass

    public java.lang.String getContextClass()

Returns:
  the Java class name of the Context implementation class for new web applications.

#### setContextClass

    public void setContextClass​(java.lang.String contextClass)

Set the Java class name of the Context implementation class for new web applications.

Parameters:
  `contextClass` - The new context implementation class

#### getDeployOnStartup

    public boolean getDeployOnStartup()

Specified by:
  `getDeployOnStartup` in interface `Host`
Returns:
  the value of the deploy on startup flag. If `true`, it indicates that this host's child webapps should be discovered and automatically deployed at startup time.

#### setDeployOnStartup

    public void setDeployOnStartup​(boolean deployOnStartup)

Set the deploy on startup flag value for this host.

Specified by:
  `setDeployOnStartup` in interface `Host`
Parameters:
  `deployOnStartup` - The new deploy on startup flag

#### isDeployXML

    public boolean isDeployXML()

Returns:
  `true` if XML context descriptors should be deployed.

#### setDeployXML

    public void setDeployXML​(boolean deployXML)

Deploy XML Context config files flag mutator.

Parameters:
  `deployXML` - `true` if context descriptors should be deployed

#### isCopyXML

    public boolean isCopyXML()

Returns:
  the copy XML config file flag for this component.

#### setCopyXML

    public void setCopyXML​(boolean copyXML)

Set the copy XML config file flag for this component.

Parameters:
  `copyXML` - The new copy XML flag

#### getErrorReportValveClass

    public java.lang.String getErrorReportValveClass()

Returns:
  the Java class name of the error report valve class for new web applications.

#### setErrorReportValveClass

    public void setErrorReportValveClass​(java.lang.String errorReportValveClass)

Set the Java class name of the error report valve class for new web applications.

Parameters:
  `errorReportValveClass` - The new error report valve class

#### getName

    public java.lang.String getName()

Description copied from class: `ContainerBase`
Return a name string (suitable for use by humans) that describes this Container. Within the set of child containers belonging to a particular parent, Container names must be unique.

Specified by:
  `getName` in interface `Container`
Overrides:
  `getName` in class `ContainerBase`
Returns:
  the canonical, fully qualified, name of the virtual host this Container represents.

#### setName

    public void setName​(java.lang.String name)

Set the canonical, fully qualified, name of the virtual host this Container represents.

Specified by:
  `setName` in interface `Container`
Overrides:
  `setName` in class `ContainerBase`
Parameters:
  `name` - Virtual host name
Throws:
  `java.lang.IllegalArgumentException` - if name is null

#### isUnpackWARs

    public boolean isUnpackWARs()

Returns:
  `true` if WARs should be unpacked on deployment.

#### setUnpackWARs

    public void setUnpackWARs​(boolean unpackWARs)

Unpack WARs flag mutator.

Parameters:
  `unpackWARs` - `true` to unpack WARs on deployment

#### getWorkDir

    public java.lang.String getWorkDir()

Returns:
  host work directory base.

#### setWorkDir

    public void setWorkDir​(java.lang.String workDir)

Set host work directory base.

Parameters:
  `workDir` - the new base work folder for this host

#### getDeployIgnore

    public java.lang.String getDeployIgnore()

Specified by:
  `getDeployIgnore` in interface `Host`
Returns:
  the regular expression that defines the files and directories in the host's `getAppBase()` that will be ignored by the automatic deployment process.

#### getDeployIgnorePattern

    public java.util.regex.Pattern getDeployIgnorePattern()

Specified by:
  `getDeployIgnorePattern` in interface `Host`
Returns:
  the compiled regular expression that defines the files and directories in the host's `getAppBase()` that will be ignored by the automatic deployment process.

#### setDeployIgnore

    public void setDeployIgnore​(java.lang.String deployIgnore)

Set the regular expression that defines the files and directories in the host's `getAppBase()` that will be ignored by the automatic deployment process.

Specified by:
  `setDeployIgnore` in interface `Host`
Parameters:
  `deployIgnore` - the regexp

#### isFailCtxIfServletStartFails

    public boolean isFailCtxIfServletStartFails()

Returns:
  `true` if a webapp start should fail if a Servlet startup fails

#### setFailCtxIfServletStartFails

    public void setFailCtxIfServletStartFails​(boolean failCtxIfServletStartFails)

Change the behavior of Servlet startup errors on web application starts.

Parameters:
  `failCtxIfServletStartFails` - `false` to ignore errors on Servlets which are stated when the web application starts

#### addAlias

    public void addAlias​(java.lang.String alias)

Add an alias name that should be mapped to this same Host.

Specified by:
  `addAlias` in interface `Host`
Parameters:
  `alias` - The alias to be added

#### addChild

    public void addChild​(Container child)

Add a child Container, only if the proposed child is an implementation of Context.

Specified by:
  `addChild` in interface `Container`
Overrides:
  `addChild` in class `ContainerBase`
Parameters:
  `child` - Child container to be added

#### findReloadedContextMemoryLeaks

    public java.lang.String[] findReloadedContextMemoryLeaks()

Attempt to identify the contexts that have a class loader memory leak. This is usually triggered on context reload. Note: This method attempts to force a full garbage collection. This should be used with extreme caution on a production system.

Returns:
  a list of possibly leaking contexts

#### findAliases

    public java.lang.String[] findAliases()

Specified by:
  `findAliases` in interface `Host`
Returns:
  the set of alias names for this Host. If none are defined, a zero length array is returned.

#### removeAlias

    public void removeAlias​(java.lang.String alias)

Remove the specified alias name from the aliases for this Host.

Specified by:
  `removeAlias` in interface `Host`
Parameters:
  `alias` - Alias name to be removed

#### startInternal

    protected void startInternal()
                          throws LifecycleException

Start this component and implement the requirements of `LifecycleBase.startInternal()`.

Overrides:
  `startInternal` in class `ContainerBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### getValveNames

    public java.lang.String[] getValveNames()
                                     throws java.lang.Exception

Returns:
  the MBean Names of the Valves associated with this Host
Throws:
  `java.lang.Exception` - if an MBean cannot be created or registered

#### getAliases

    public java.lang.String[] getAliases()

#### getObjectNameKeyProperties

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