Package org.apache.catalina.valves
Class FilterValve
java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.valves.ValveBase
org.apache.catalina.valves.FilterValve
- All Implemented Interfaces:
FilterConfig
,MBeanRegistration
,Contained
,JmxEnabled
,Lifecycle
,Valve
A Valve to wrap a Filter, allowing a user to run Servlet Filters as a part of the Valve chain.
There are some caveats you must be aware of when using this Valve to wrap a Filter:
- You get a separate instance of your Filter class distinct from any that may be instantiated within your application.
- Calls to
FilterConfig.getFilterName()
will returnnull
. - Calling
FilterConfig.getServletContext()
will return the proper ServletContext for a Valve/Filter attached to a<Context>
, but will return a ServletContext which is nearly useless for any Valve/Filter specified on an<Engine>
or>Host<
. - Your Filter MUST NOT wrap the
ServletRequest
orServletResponse
objects, or an exception will be thrown.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
Field Summary
Fields inherited from class org.apache.catalina.valves.ValveBase
asyncSupported, container, containerLog, next, sm
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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addInitParam
(String paramName, String paramValue) Adds an initialization parameter for the Filter.Gets the name of the class for the Filter.Gets the name of the Filter.getInitParameter
(String name) Gets the initialization parameter with the specified name.Gets an enumeration of the names of all initialization parameters.Gets the ServletContext.void
Perform request processing as required by this Valve.void
setFilterClass
(String filterClassName) Sets the name of the class for the Filter.void
setFilterClassName
(String filterClassName) Sets the name of the class for the Filter.protected void
Start this component and implement the requirements ofLifecycleBase.startInternal()
.protected void
Stop this component and implement the requirements ofLifecycleBase.stopInternal()
.Methods inherited from class org.apache.catalina.valves.ValveBase
backgroundProcess, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNext, toString
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, 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
-
Constructor Details
-
FilterValve
public FilterValve()
-
-
Method Details
-
setFilterClass
Sets the name of the class for the Filter.- Parameters:
filterClassName
- The class name for the Filter.
-
setFilterClassName
Sets the name of the class for the Filter.- Parameters:
filterClassName
- The class name for the Filter.
-
getFilterClassName
Gets the name of the class for the Filter.- Returns:
- The class name for the Filter.
-
addInitParam
-
getFilterName
Gets the name of the Filter.- Specified by:
getFilterName
in interfaceFilterConfig
- Returns:
null
-
getServletContext
Gets the ServletContext. Note that this will be of limited use if the Valve/Filter is not attached to a<Context>
.- Specified by:
getServletContext
in interfaceFilterConfig
- Returns:
ServletContext
object, used by the caller to interact with its servlet container- See Also:
-
getInitParameter
Gets the initialization parameter with the specified name.- Specified by:
getInitParameter
in interfaceFilterConfig
- Parameters:
name
- The name of the initialization parameter.- Returns:
- The value for the initialization parameter, or
null
if there is no value for the specified initialization parameter name.
-
getInitParameterNames
Gets an enumeration of the names of all initialization parameters.- Specified by:
getInitParameterNames
in interfaceFilterConfig
- Returns:
- An enumeration of the names of all initialization parameters.
-
startInternal
Description copied from class:ValveBase
Start this component and implement the requirements ofLifecycleBase.startInternal()
.- Overrides:
startInternal
in classValveBase
- Throws:
LifecycleException
- if this component detects a fatal error that prevents this component from being used
-
stopInternal
Description copied from class:ValveBase
Stop this component and implement the requirements ofLifecycleBase.stopInternal()
.- Overrides:
stopInternal
in classValveBase
- Throws:
LifecycleException
- if this component detects a fatal error that prevents this component from being used
-
invoke
Description copied from interface:Valve
Perform request processing as required by this Valve.
An individual Valve MAY perform the following actions, in the specified order:
- Examine and/or modify the properties of the specified Request and Response.
- Examine the properties of the specified Request, completely generate the corresponding Response, and return control to the caller.
- Examine the properties of the specified Request and Response, wrap either or both of these objects to supplement their functionality, and pass them on.
- If the corresponding Response was not generated (and control was not
returned, call the next Valve in the pipeline (if there is one) by
executing
getNext().invoke()
. - Examine, but not modify, the properties of the resulting Response (which was created by a subsequently invoked Valve or Container).
A Valve MUST NOT do any of the following things:
- Change request properties that have already been used to direct the flow of processing control for this request (for instance, trying to change the virtual host to which a Request should be sent from a pipeline attached to a Host or Context in the standard implementation).
- Create a completed Response AND pass this Request and Response on to the next Valve in the pipeline.
- Consume bytes from the input stream associated with the Request, unless it is completely generating the response, or wrapping the request before passing it on.
- Modify the HTTP headers included with the Response after the
getNext().invoke()
method has returned. - Perform any actions on the output stream associated with the
specified Response after the
getNext().invoke()
method has returned.
- Specified by:
invoke
in interfaceValve
- Parameters:
request
- The servlet request to be processedresponse
- The servlet response to be created- Throws:
IOException
- if an input/output error occurs, or is thrown by a subsequently invoked Valve, Filter, or ServletServletException
- if a servlet error occurs, or is thrown by a subsequently invoked Valve, Filter, or Servlet
-