org.apache.catalina.valves
abstract public class: ValveBase [javadoc |
source]
java.lang.Object
org.apache.catalina.valves.ValveBase
All Implemented Interfaces:
Valve, MBeanRegistration, Contained
Direct Known Subclasses:
SemaphoreValve, ClusterSingleSignOn, AuthenticatorBase, DigestAuthenticator, FastCommonAccessLogValve, RemoteHostValve, JDBCAccessLogValve, BasicAuthenticator, StandardHostValve, RemoteAddrValve, ReplicationValve, FormAuthenticator, RequestDumperValve, ReplicationValve, JvmRouteBinderValve, SSLValve, NonLoginAuthenticator, ExtendedAccessLogValve, StandardEngineValve, JvmRouteBinderValve, CometConnectionManagerValve, ErrorReportValve, StandardContextValve, AccessLogValve, RequestFilterValve, PersistentValve, StandardWrapperValve, SSLAuthenticator, SingleSignOn
Convenience base class for implementations of the
Valve interface.
A subclass
MUST implement an
invoke()
method to provide the required functionality, and
MAY
implement the
Lifecycle interface to provide configuration
management and lifecycle support.
- author:
Craig - R. McClanahan
- version:
$ - Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
| Field Summary |
|---|
| protected Container | container | The Container whose pipeline this Valve is a component of. |
| protected Log | containerLog | Container log |
| protected static String | info | Descriptive information about this Valve implementation. This value
should be overridden by subclasses. |
| protected Valve | next | The next Valve in the pipeline this Valve is a component of. |
| protected static final StringManager | sm | The string manager for this package. |
| protected String | domain | |
| protected ObjectName | oname | |
| protected MBeanServer | mserver | |
| protected ObjectName | controller | |
| Method from org.apache.catalina.valves.ValveBase Summary: |
|---|
|
backgroundProcess, createObjectName, event, getContainer, getContainerName, getController, getDomain, getInfo, getNext, getObjectName, getParentName, invoke, postDeregister, postRegister, preDeregister, preRegister, setContainer, setController, setNext, setObjectName, toString |
| Method from org.apache.catalina.valves.ValveBase Detail: |
public void backgroundProcess() {
}
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. |
public ObjectName createObjectName(String domain,
ObjectName parent) throws MalformedObjectNameException {
Container container=this.getContainer();
if( container == null || ! (container instanceof ContainerBase) )
return null;
this.containerLog = container.getLogger();
ContainerBase containerBase=(ContainerBase)container;
Pipeline pipe=containerBase.getPipeline();
Valve valves[]=pipe.getValves();
/* Compute the "parent name" part */
String parentName="";
if (container instanceof Engine) {
} else if (container instanceof Host) {
parentName=",host=" +container.getName();
} else if (container instanceof Context) {
String path = ((Context)container).getPath();
if (path.length() < 1) {
path = "/";
}
Host host = (Host) container.getParent();
parentName=",path=" + path + ",host=" +
host.getName();
} else if (container instanceof Wrapper) {
Context ctx = (Context) container.getParent();
String path = ctx.getPath();
if (path.length() < 1) {
path = "/";
}
Host host = (Host) ctx.getParent();
parentName=",servlet=" + container.getName() +
",path=" + path + ",host=" + host.getName();
}
log.debug("valve parent=" + parentName + " " + parent);
String className=this.getClass().getName();
int period = className.lastIndexOf('.");
if (period >= 0)
className = className.substring(period + 1);
int seq=0;
for( int i=0; i< valves.length; i++ ) {
// Find other valves with the same name
if (valves[i] == this) {
break;
}
if( valves[i]!=null &&
valves[i].getClass() == this.getClass() ) {
log.debug("Duplicate " + valves[i] + " " + this + " " + container);
seq++;
}
}
String ext="";
if( seq > 0 ) {
ext=",seq=" + seq;
}
ObjectName objectName =
new ObjectName( domain + ":type=Valve,name=" + className + ext + parentName);
log.debug("valve objectname = "+objectName);
return objectName;
}
|
public void event(Request request,
Response response,
CometEvent event) throws IOException, ServletException {
// Perform the request
getNext().event(request, response, event);
}
Process a Comet event. This method will rarely need to be provided by
a subclass, unless it needs to reassociate a particular object with
the thread that is processing the request. |
public Container getContainer() {
//-------------------------------------------------------------- Properties
return (container);
}
Return the Container with which this Valve is associated, if any. |
public ObjectName getContainerName() {
if( container== null) return null;
return ((ContainerBase)container).getJmxName();
}
|
public ObjectName getController() {
return controller;
}
|
public String getDomain() {
return domain;
}
|
public String getInfo() {
return (info);
}
Return descriptive information about this Valve implementation. |
public Valve getNext() {
return (next);
}
Return the next Valve in this pipeline, or null if this
is the last Valve in the pipeline. |
public ObjectName getObjectName() {
return oname;
}
|
public ObjectName getParentName(ObjectName valveName) {
return null;
}
From the name, extract the parent object name |
abstract public void invoke(Request request,
Response response) throws IOException, ServletException
|
public void postDeregister() {
}
|
public void postRegister(Boolean registrationDone) {
}
|
public void preDeregister() throws Exception {
}
|
public ObjectName preRegister(MBeanServer server,
ObjectName name) throws Exception {
oname=name;
mserver=server;
domain=name.getDomain();
return name;
}
|
public void setContainer(Container container) {
this.container = container;
}
Set the Container with which this Valve is associated, if any. |
public void setController(ObjectName controller) {
this.controller = controller;
}
|
public void setNext(Valve valve) {
this.next = valve;
}
Set the Valve that follows this one in the pipeline it is part of. |
public void setObjectName(ObjectName oname) {
this.oname = oname;
}
|
public String toString() {
StringBuffer sb = new StringBuffer(this.getClass().getName());
sb.append("[");
if (container != null)
sb.append(container.getName());
sb.append("]");
return (sb.toString());
}
Return a String rendering of this object. |