Abstract implementation of the
Container interface, providing common functionality required by nearly every implementation. Classes extending this base class must 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. TODO: Review synchronisation around background processing. See bug 47024.
@author Craig R. McClanahan