Package org.apache.catalina.core
Class StandardEngine
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.util.LifecycleMBeanBase
-
- org.apache.catalina.core.ContainerBase
-
- org.apache.catalina.core.StandardEngine
-
- All Implemented Interfaces:
javax.management.MBeanRegistration
,Container
,Engine
,JmxEnabled
,Lifecycle
public class StandardEngine extends ContainerBase implements Engine
Standard implementation of the Engine interface. Each child container must be a Host implementation to process the specific fully qualified host name of that virtual host.
The jvmRoute should be set directly like any other property. Using the System property jvmRoute is deprecated and will be removed in Tomcat 10.1 onwards.- Author:
- Craig R. McClanahan
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
StandardEngine.AccessLogListener
protected static class
StandardEngine.NoopAccessLog
-
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 interface org.apache.catalina.Container
ADD_CHILD_EVENT, ADD_VALVE_EVENT, REMOVE_CHILD_EVENT, REMOVE_VALVE_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 Constructor Description StandardEngine()
Create a new StandardEngine component with the default basic Valve.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChild(Container child)
Add a child Container, only if the proposed child is an implementation of Host.java.io.File
getCatalinaBase()
Obtain the location of CATALINA_BASE.java.io.File
getCatalinaHome()
Obtain the location of CATALINA_HOME.java.lang.String
getDefaultHost()
Return the default host.protected java.lang.String
getDomainInternal()
Method implemented by sub-classes to identify the domain in which MBeans should be registered.java.lang.String
getJvmRoute()
Retrieve the cluster-wide unique identifier for this Engine.protected java.lang.String
getObjectNameKeyProperties()
Allow sub-classes to specify the key properties component of theObjectName
that will be used to register this component.java.lang.ClassLoader
getParentClassLoader()
Return the parent class loader for this component.Realm
getRealm()
Obtain the configured Realm and provide a default Realm implementation when no explicit configuration is set.Service
getService()
Return theService
with which we are associated (if any).protected void
initInternal()
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.void
logAccess(Request request, Response response, long time, boolean useDefault)
Override the default implementation.void
setDefaultHost(java.lang.String host)
Set the default host.void
setJvmRoute(java.lang.String routeId)
Set the cluster-wide unique identifier for this Engine.void
setParent(Container container)
Disallow any attempt to set a parent for this Container, since an Engine is supposed to be at the top of the Container hierarchy.void
setService(Service service)
Set theService
with which we are associated (if any).protected void
startInternal()
Start this component and implement the requirements ofLifecycleBase.startInternal()
.-
Methods inherited from class org.apache.catalina.core.ContainerBase
addContainerListener, addPropertyChangeListener, addValve, backgroundProcess, destroyInternal, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getChildren, getCluster, getClusterInternal, getLogger, getLogName, getMBeanKeyProperties, getName, getParent, getPipeline, getRealmInternal, getStartChildren, getStartStopThreads, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setName, 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, getCluster, getDomain, getLogger, getLogName, getMBeanKeyProperties, getName, getObjectName, getParent, getPipeline, getStartStopThreads, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setName, setParentClassLoader, setRealm, setStartStopThreads
-
Methods inherited from interface org.apache.catalina.Lifecycle
addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop
-
-
-
-
Method Detail
-
getRealm
public Realm getRealm()
Obtain the configured Realm and provide a default Realm implementation when no explicit configuration is set.- Specified by:
getRealm
in interfaceContainer
- Overrides:
getRealm
in classContainerBase
- Returns:
- configured realm, or a
NullRealm
by default
-
getDefaultHost
public java.lang.String getDefaultHost()
Return the default host.- Specified by:
getDefaultHost
in interfaceEngine
- Returns:
- the default host name for this Engine.
-
setDefaultHost
public void setDefaultHost(java.lang.String host)
Set the default host.- Specified by:
setDefaultHost
in interfaceEngine
- Parameters:
host
- The new default host
-
setJvmRoute
public void setJvmRoute(java.lang.String routeId)
Set the cluster-wide unique identifier for this Engine. This value is only useful in a load-balancing scenario.This property should not be changed once it is set.
- Specified by:
setJvmRoute
in interfaceEngine
- Parameters:
routeId
- the (new) JVM Route ID. Each Engine within a cluster must have a unique JVM Route ID.
-
getJvmRoute
public java.lang.String getJvmRoute()
Retrieve the cluster-wide unique identifier for this Engine. This value is only useful in a load-balancing scenario.- Specified by:
getJvmRoute
in interfaceEngine
- Returns:
- the JvmRouteId for this engine.
-
getService
public Service getService()
Return theService
with which we are associated (if any).- Specified by:
getService
in interfaceEngine
- Returns:
- the
Service
with which we are associated (if any).
-
setService
public void setService(Service service)
Set theService
with which we are associated (if any).- Specified by:
setService
in interfaceEngine
- Parameters:
service
- The service that owns this Engine
-
addChild
public void addChild(Container child)
Add a child Container, only if the proposed child is an implementation of Host.- Specified by:
addChild
in interfaceContainer
- Overrides:
addChild
in classContainerBase
- Parameters:
child
- Child container to be added
-
setParent
public void setParent(Container container)
Disallow any attempt to set a parent for this Container, since an Engine is supposed to be at the top of the Container hierarchy.- Specified by:
setParent
in interfaceContainer
- Overrides:
setParent
in classContainerBase
- Parameters:
container
- Proposed parent Container
-
initInternal
protected void initInternal() throws LifecycleException
Description copied from class:LifecycleMBeanBase
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.- Overrides:
initInternal
in classContainerBase
- Throws:
LifecycleException
- If the initialisation fails
-
startInternal
protected void startInternal() throws LifecycleException
Start this component and implement the requirements ofLifecycleBase.startInternal()
.- Overrides:
startInternal
in classContainerBase
- Throws:
LifecycleException
- if this component detects a fatal error that prevents this component from being used
-
logAccess
public void logAccess(Request request, Response response, long time, boolean useDefault)
Override the default implementation. If no access log is defined for the Engine, look for one in the Engine's default host and then the default host's ROOT context. If still none is found, return the default NoOp access log.- Specified by:
logAccess
in interfaceContainer
- Overrides:
logAccess
in classContainerBase
- Parameters:
request
- Request (associated with the response) to logresponse
- Response (associated with the request) to logtime
- Time taken to process the request/response in milliseconds (use 0 if not known)useDefault
- Flag that indicates that the request/response should be logged in the engine's default access log
-
getParentClassLoader
public java.lang.ClassLoader getParentClassLoader()
Return the parent class loader for this component.- Specified by:
getParentClassLoader
in interfaceContainer
- Overrides:
getParentClassLoader
in classContainerBase
- Returns:
- the parent class loader for this component. If not set, return
Container.getParent()
.Container.getParentClassLoader()
. If no parent has been set, return the system class loader.
-
getCatalinaBase
public java.io.File getCatalinaBase()
Description copied from interface:Container
Obtain the location of CATALINA_BASE.- Specified by:
getCatalinaBase
in interfaceContainer
- Overrides:
getCatalinaBase
in classContainerBase
- Returns:
- The location of CATALINA_BASE.
-
getCatalinaHome
public java.io.File getCatalinaHome()
Description copied from interface:Container
Obtain the location of CATALINA_HOME.- Specified by:
getCatalinaHome
in interfaceContainer
- Overrides:
getCatalinaHome
in classContainerBase
- Returns:
- The location of CATALINA_HOME.
-
getObjectNameKeyProperties
protected java.lang.String getObjectNameKeyProperties()
Description copied from class:LifecycleMBeanBase
Allow sub-classes to specify the key properties component of theObjectName
that will be used to register this component.- Specified by:
getObjectNameKeyProperties
in classLifecycleMBeanBase
- Returns:
- The string representation of the key properties component of the
desired
ObjectName
-
getDomainInternal
protected java.lang.String getDomainInternal()
Description copied from class:LifecycleMBeanBase
Method implemented by sub-classes to identify the domain in which MBeans should be registered.- Overrides:
getDomainInternal
in classContainerBase
- Returns:
- The name of the domain to use to register MBeans.
-
-