| java.lang.Object org.apache.catalina.core.ContainerBase
All known Subclasses: org.apache.catalina.core.StandardHost, org.apache.catalina.core.StandardWrapper, org.apache.catalina.core.StandardEngine, org.apache.catalina.core.StandardContext,
ContainerBase | abstract public class ContainerBase implements Container,Lifecycle,Pipeline,MBeanRegistration,Serializable(Code) | | Abstract implementation of the Container interface, providing common
functionality required by nearly every implementation. Classes extending
this base class must implement getInfo() , and may implement
a replacement for invoke() .
All subclasses of this abstract base class will include support for a
Pipeline object that defines the processing to be performed for each request
received by the invoke() method of this class, utilizing the
"Chain of Responsibility" design pattern. A subclass should encapsulate its
own processing functionality as a Valve , and configure this
Valve into the pipeline by calling setBasic() .
This implementation fires property change events, per the JavaBeans design
pattern, for changes in singleton properties. In addition, it fires the
following ContainerEvent events to listeners who register
themselves with addContainerListener() :
Type |
Data |
Description |
addChild |
Container |
Child container added to this Container. |
addValve |
Valve |
Valve added to this Container. |
removeChild |
Container |
Child container removed from this Container. |
removeValve |
Valve |
Valve removed from this Container. |
start |
null |
Container was started. |
stop |
null |
Container was stopped. |
Subclasses that fire additional events should document them in the
class comments of the implementation class.
author: Craig R. McClanahan |
Inner Class :protected class ContainerBackgroundProcessor implements Runnable | |
Method Summary | |
public void | addChild(Container child) Add a new child Container to those associated with this Container,
if supported. | public void | addContainerListener(ContainerListener listener) Add a container event listener to this component. | public void | addLifecycleListener(LifecycleListener listener) Add a lifecycle event listener to this component. | public void | addPropertyChangeListener(PropertyChangeListener listener) Add a property change listener to this component. | public synchronized void | addValve(Valve valve) Add a new Valve to the end of the pipeline associated with this
Container. | public void | backgroundProcess() Execute a periodic task, such as reloading, etc. | public ObjectName | createObjectName(String domain, ObjectName parent) | public void | destroy() | public Container | findChild(String name) | public Container[] | findChildren() Return the set of children Containers associated with this Container. | public ContainerListener[] | findContainerListeners() Return the set of container listeners associated with this Container. | public LifecycleListener[] | findLifecycleListeners() Get the lifecycle listeners associated with this lifecycle. | public void | fireContainerEvent(String type, Object data) Notify all container event listeners that a particular event has
occurred for this Container. | public int | getBackgroundProcessorDelay() Get the delay between the invocation of the backgroundProcess method on
this container and its children. | public Valve | getBasic() Return the Valve instance that has been distinguished as the basic
Valve for this Pipeline (if any). | public ObjectName[] | getChildren() | public Cluster | getCluster() Return the Cluster with which this Container is associated. | public String | getContainerSuffix() | public int | getDebug() Return the debugging detail level for this component. | public String | getDomain() | public String | getInfo() Return descriptive information about this Container implementation and
the corresponding version number, in the format
<description>/<version> . | protected String | getJSR77Suffix() | public ObjectName | getJmxName() | public Loader | getLoader() Return the Loader with which this Container is associated. | public Logger | getLogger() Return the Logger with which this Container is associated. | public Manager | getManager() Return the Manager with which this Container is associated. | public Object | getMappingObject() Return an object which may be utilized for mapping to this component. | public String | getName() Return a name string (suitable for use by humans) that describes this
Container. | public String | getObjectName() | public Container | getParent() Return the Container for which this Container is a child, if there is
one. | public ClassLoader | getParentClassLoader() Return the parent class loader (if any) for this web application. | public ObjectName | getParentName() | public Pipeline | getPipeline() Return the Pipeline object that manages the Valves associated with
this Container. | public Realm | getRealm() Return the Realm with which this Container is associated. | public DirContext | getResources() Return the resources DirContext object with which this Container is
associated. | public String | getType() | public ObjectName[] | getValveObjectNames() | public Valve[] | getValves() Return the set of Valves in the pipeline associated with this
Container, including the basic Valve (if any). | public void | init() Init method, part of the MBean lifecycle.
If the container was added via JMX, it'll register itself with the
parent, using the ObjectName conventions to locate the parent.
If the container was added directly and it doesn't have an ObjectName,
it'll create a name and register itself with the JMX console. | final public void | invoke(Request request, Response response) Process the specified Request, to produce the corresponding Response,
by invoking the first Valve in our pipeline (if any), or the basic
Valve otherwise. | protected void | log(String message) Log the specified message to our current Logger (if any). | protected void | log(String message, Throwable throwable) Log the specified message and exception to our current Logger
(if any). | protected String | logName() | public void | postDeregister() | public void | postRegister(Boolean registrationDone) | public void | preDeregister() | public ObjectName | preRegister(MBeanServer server, ObjectName name) | public void | removeChild(Container child) Remove an existing child Container from association with this parent
Container. | public void | removeContainerListener(ContainerListener listener) Remove a container event listener from this component. | public void | removeLifecycleListener(LifecycleListener listener) Remove a lifecycle event listener from this component. | public void | removePropertyChangeListener(PropertyChangeListener listener) Remove a property change listener from this component. | public synchronized void | removeValve(Valve valve) Remove the specified Valve from the pipeline associated with this
Container, if it is found; otherwise, do nothing. | public void | setBackgroundProcessorDelay(int delay) Set the delay between the invocation of the execute method on this
container and its children. | public void | setBasic(Valve valve) Set the Valve instance that has been distinguished as the basic
Valve for this Pipeline (if any). | public synchronized void | setCluster(Cluster cluster) Set the Cluster with which this Container is associated. | public void | setDebug(int debug) Set the debugging detail level for this component. | public void | setDomain(String domain) | public synchronized void | setLoader(Loader loader) Set the Loader with which this Container is associated. | public synchronized void | setLogger(Logger logger) Set the Logger with which this Container is associated. | public synchronized void | setManager(Manager manager) Set the Manager with which this Container is associated. | public void | setName(String name) Set a name string (suitable for use by humans) that describes this
Container. | public void | setParent(Container container) Set the parent Container to which this Container is being added as a
child. | public void | setParentClassLoader(ClassLoader parent) Set the parent class loader (if any) for this web application. | public synchronized void | setRealm(Realm realm) Set the Realm with which this Container is associated. | public synchronized void | setResources(DirContext resources) Set the resources DirContext object with which this Container is
associated. | public synchronized void | start() Prepare for active use of the public methods of this Component. | public synchronized void | stop() Gracefully shut down active use of the public methods of this Component. | protected void | threadStart() Start the background thread that will periodically check for
session timeouts. | protected void | threadStop() Stop the background thread that is periodically checking for
session timeouts. |
backgroundProcessorDelay | protected int backgroundProcessorDelay(Code) | | The processor delay for this component.
|
children | protected HashMap children(Code) | | The child Containers belonging to this Container, keyed by name.
|
cluster | protected Cluster cluster(Code) | | The cluster with which this Container is associated.
|
debug | protected int debug(Code) | | The debugging detail level for this component.
|
initialized | protected boolean initialized(Code) | | |
listeners | protected ArrayList listeners(Code) | | The container event listeners for this Container.
|
loader | protected Loader loader(Code) | | The Loader implementation with which this Container is associated.
|
logger | protected Logger logger(Code) | | The Logger implementation with which this Container is associated.
|
manager | protected Manager manager(Code) | | The Manager implementation with which this Container is associated.
|
name | protected String name(Code) | | The human-readable name of this Container.
|
parent | protected Container parent(Code) | | The parent Container to which this Container is a child.
|
parentClassLoader | protected ClassLoader parentClassLoader(Code) | | The parent class loader to be configured when we install a Loader.
|
pipeline | protected Pipeline pipeline(Code) | | The Pipeline object with which this Container is associated.
|
realm | protected Realm realm(Code) | | The Realm with which this Container is associated.
|
resources | protected DirContext resources(Code) | | The resources DirContext object with which this Container is associated.
|
started | protected boolean started(Code) | | Has this component been started?
|
addChild | public void addChild(Container child)(Code) | | Add a new child Container to those associated with this Container,
if supported. Prior to adding this Container to the set of children,
the child's setParent() method must be called, with this
Container as an argument. This method may thrown an
IllegalArgumentException if this Container chooses not
to be attached to the specified Container, in which case it is not added
Parameters: child - New child Container to be added exception: IllegalArgumentException - if this exception is thrown bythe setParent() method of the child Container exception: IllegalArgumentException - if the new child does not havea name unique from that of existing children of this Container exception: IllegalStateException - if this Container does not supportchild Containers |
addContainerListener | public void addContainerListener(ContainerListener listener)(Code) | | Add a container event listener to this component.
Parameters: listener - The listener to add |
addLifecycleListener | public void addLifecycleListener(LifecycleListener listener)(Code) | | Add a lifecycle event listener to this component.
Parameters: listener - The listener to add |
addPropertyChangeListener | public void addPropertyChangeListener(PropertyChangeListener listener)(Code) | | Add a property change listener to this component.
Parameters: listener - The listener to add |
addValve | public synchronized void addValve(Valve valve)(Code) | | Add a new Valve to the end of the pipeline associated with this
Container. Prior to adding the Valve, the Valve's
setContainer method must be called, with this Container
as an argument. The method may throw an
IllegalArgumentException if this Valve chooses not to
be associated with this Container, or IllegalStateException
if it is already associated with a different Container.
Parameters: valve - Valve to be added exception: IllegalArgumentException - if this Container refused toaccept the specified Valve exception: IllegalArgumentException - if the specifie Valve refuses to beassociated with this Container exception: IllegalStateException - if the specified Valve is alreadyassociated with a different Container |
backgroundProcess | public void backgroundProcess()(Code) | | Execute a periodic task, such as reloading, etc. This method will be
invoked inside the classloading context of this container. Unexpected
throwables will be caught and logged.
|
findChild | public Container findChild(String name)(Code) | | Return the child Container, associated with this Container, with
the specified name (if any); otherwise, return null
Parameters: name - Name of the child Container to be retrieved |
findChildren | public Container[] findChildren()(Code) | | Return the set of children Containers associated with this Container.
If this Container has no children, a zero-length array is returned.
|
findContainerListeners | public ContainerListener[] findContainerListeners()(Code) | | Return the set of container listeners associated with this Container.
If this Container has no registered container listeners, a zero-length
array is returned.
|
findLifecycleListeners | public LifecycleListener[] findLifecycleListeners()(Code) | | Get the lifecycle listeners associated with this lifecycle. If this
Lifecycle has no listeners registered, a zero-length array is returned.
|
fireContainerEvent | public void fireContainerEvent(String type, Object data)(Code) | | Notify all container event listeners that a particular event has
occurred for this Container. The default implementation performs
this notification synchronously using the calling thread.
Parameters: type - Event type Parameters: data - Event data |
getBackgroundProcessorDelay | public int getBackgroundProcessorDelay()(Code) | | Get the delay between the invocation of the backgroundProcess method on
this container and its children. Child containers will not be invoked
if their delay value is not negative (which would mean they are using
their own thread). Setting this to a positive value will cause
a thread to be spawn. After waiting the specified amount of time,
the thread will invoke the executePeriodic method on this container
and all its children.
|
getBasic | public Valve getBasic()(Code) | | Return the Valve instance that has been distinguished as the basic
Valve for this Pipeline (if any).
|
getCluster | public Cluster getCluster()(Code) | | Return the Cluster with which this Container is associated. If there is
no associated Cluster, return the Cluster associated with our parent
Container (if any); otherwise return null .
|
getDebug | public int getDebug()(Code) | | Return the debugging detail level for this component.
|
getInfo | public String getInfo()(Code) | | Return descriptive information about this Container implementation and
the corresponding version number, in the format
<description>/<version> .
|
getLoader | public Loader getLoader()(Code) | | Return the Loader with which this Container is associated. If there is
no associated Loader, return the Loader associated with our parent
Container (if any); otherwise, return null .
|
getLogger | public Logger getLogger()(Code) | | Return the Logger with which this Container is associated. If there is
no associated Logger, return the Logger associated with our parent
Container (if any); otherwise return null .
|
getManager | public Manager getManager()(Code) | | Return the Manager with which this Container is associated. If there is
no associated Manager, return the Manager associated with our parent
Container (if any); otherwise return null .
|
getMappingObject | public Object getMappingObject()(Code) | | Return an object which may be utilized for mapping to this component.
|
getName | public String getName()(Code) | | 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.
|
getParent | public Container getParent()(Code) | | Return the Container for which this Container is a child, if there is
one. If there is no defined parent, return null .
|
getParentClassLoader | public ClassLoader getParentClassLoader()(Code) | | Return the parent class loader (if any) for this web application.
This call is meaningful only after a Loader has
been configured.
|
getPipeline | public Pipeline getPipeline()(Code) | | Return the Pipeline object that manages the Valves associated with
this Container.
|
getRealm | public Realm getRealm()(Code) | | Return the Realm with which this Container is associated. If there is
no associated Realm, return the Realm associated with our parent
Container (if any); otherwise return null .
|
getResources | public DirContext getResources()(Code) | | Return the resources DirContext object with which this Container is
associated. If there is no associated resources object, return the
resources associated with our parent Container (if any); otherwise
return null .
|
getValves | public Valve[] getValves()(Code) | | Return the set of Valves in the pipeline associated with this
Container, including the basic Valve (if any). If there are no
such Valves, a zero-length array is returned.
|
init | public void init() throws Exception(Code) | | Init method, part of the MBean lifecycle.
If the container was added via JMX, it'll register itself with the
parent, using the ObjectName conventions to locate the parent.
If the container was added directly and it doesn't have an ObjectName,
it'll create a name and register itself with the JMX console. On destroy(),
the object will unregister.
throws: Exception - |
invoke | final public void invoke(Request request, Response response) throws IOException, ServletException(Code) | | Process the specified Request, to produce the corresponding Response,
by invoking the first Valve in our pipeline (if any), or the basic
Valve otherwise.
Parameters: request - Request to be processed Parameters: response - Response to be produced exception: IllegalStateException - if neither a pipeline or a basicValve have been configured for this Container exception: IOException - if an input/output error occurred whileprocessing exception: ServletException - if a ServletException was thrownwhile processing this request |
log | protected void log(String message)(Code) | | Log the specified message to our current Logger (if any).
Parameters: message - Message to be logged |
log | protected void log(String message, Throwable throwable)(Code) | | Log the specified message and exception to our current Logger
(if any).
Parameters: message - Message to be logged Parameters: throwable - Related exception |
logName | protected String logName()(Code) | | Return the abbreviated name of this container for logging messsages
|
postDeregister | public void postDeregister()(Code) | | |
postRegister | public void postRegister(Boolean registrationDone)(Code) | | |
removeChild | public void removeChild(Container child)(Code) | | Remove an existing child Container from association with this parent
Container.
Parameters: child - Existing child Container to be removed |
removeContainerListener | public void removeContainerListener(ContainerListener listener)(Code) | | Remove a container event listener from this component.
Parameters: listener - The listener to remove |
removeLifecycleListener | public void removeLifecycleListener(LifecycleListener listener)(Code) | | Remove a lifecycle event listener from this component.
Parameters: listener - The listener to remove |
removePropertyChangeListener | public void removePropertyChangeListener(PropertyChangeListener listener)(Code) | | Remove a property change listener from this component.
Parameters: listener - The listener to remove |
removeValve | public synchronized void removeValve(Valve valve)(Code) | | Remove the specified Valve from the pipeline associated with this
Container, if it is found; otherwise, do nothing.
Parameters: valve - Valve to be removed |
setBackgroundProcessorDelay | public void setBackgroundProcessorDelay(int delay)(Code) | | Set the delay between the invocation of the execute method on this
container and its children.
Parameters: delay - The delay in seconds between the invocation of backgroundProcess methods |
setBasic | public void setBasic(Valve valve)(Code) | | Set the Valve instance that has been distinguished as the basic
Valve for this Pipeline (if any). Prioer to setting the basic Valve,
the Valve's setContainer() will be called, if it
implements Contained , with the owning Container as an
argument. The method may throw an IllegalArgumentException
if this Valve chooses not to be associated with this Container, or
IllegalStateException if it is already associated with
a different Container.
Parameters: valve - Valve to be distinguished as the basic Valve |
setCluster | public synchronized void setCluster(Cluster cluster)(Code) | | Set the Cluster with which this Container is associated.
Parameters: cluster - The newly associated Cluster |
setDebug | public void setDebug(int debug)(Code) | | Set the debugging detail level for this component.
Parameters: debug - The new debugging detail level |
setLoader | public synchronized void setLoader(Loader loader)(Code) | | Set the Loader with which this Container is associated.
Parameters: loader - The newly associated loader |
setLogger | public synchronized void setLogger(Logger logger)(Code) | | Set the Logger with which this Container is associated.
Parameters: logger - The newly associated Logger |
setManager | public synchronized void setManager(Manager manager)(Code) | | Set the Manager with which this Container is associated.
Parameters: manager - The newly associated Manager |
setName | public void setName(String name)(Code) | | Set 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.
Parameters: name - New name of this container exception: IllegalStateException - if this Container has already beenadded to the children of a parent Container (after which the namemay not be changed) |
setParent | public void setParent(Container container)(Code) | | Set the parent Container to which this Container is being added as a
child. This Container may refuse to become attached to the specified
Container by throwing an exception.
Parameters: container - Container to which this Container is being addedas a child exception: IllegalArgumentException - if this Container refuses to becomeattached to the specified Container |
setParentClassLoader | public void setParentClassLoader(ClassLoader parent)(Code) | | Set the parent class loader (if any) for this web application.
This call is meaningful only before a Loader has
been configured, and the specified value (if non-null) should be
passed as an argument to the class loader constructor.
Parameters: parent - The new parent class loader |
setRealm | public synchronized void setRealm(Realm realm)(Code) | | Set the Realm with which this Container is associated.
Parameters: realm - The newly associated Realm |
setResources | public synchronized void setResources(DirContext resources)(Code) | | Set the resources DirContext object with which this Container is
associated.
Parameters: resources - The newly associated DirContext |
start | public synchronized void start() throws LifecycleException(Code) | | Prepare for active use of the public methods of this Component.
exception: LifecycleException - if this component detects a fatal errorthat prevents it from being started |
stop | public synchronized void stop() throws LifecycleException(Code) | | Gracefully shut down active use of the public methods of this Component.
exception: LifecycleException - if this component detects a fatal errorthat needs to be reported |
threadStart | protected void threadStart()(Code) | | Start the background thread that will periodically check for
session timeouts.
|
threadStop | protected void threadStop()(Code) | | Stop the background thread that is periodically checking for
session timeouts.
|
|
|