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.Get the name of the filter.getInitParameter
(String name) Returns aString
containing the value of the named initialization parameter, ornull
if the parameter does not exist.Returns the names of the filter's initialization parameters as anEnumeration
ofString
objects, or an emptyEnumeration
if the filter has no initialization parameters.Returns a reference to theServletContext
in which the caller is executing.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
Description copied from interface:jakarta.servlet.FilterConfig
Get the name of the filter.- Specified by:
getFilterName
in interfaceFilterConfig
- Returns:
null
-
getServletContext
Description copied from interface:jakarta.servlet.FilterConfig
Returns a reference to theServletContext
in which the caller is executing.- Specified by:
getServletContext
in interfaceFilterConfig
- Returns:
- the ServletContext. Note that this will be of limited use if the Valve/Filter is not attached to a
<Context>
. - See Also:
-
getInitParameter
Description copied from interface:jakarta.servlet.FilterConfig
Returns aString
containing the value of the named initialization parameter, ornull
if the parameter does not exist.- Specified by:
getInitParameter
in interfaceFilterConfig
- Parameters:
name
-String
specifying the name of the initialization parameter- Returns:
String
containing the value of the initialization parameter
-
getInitParameterNames
Description copied from interface:jakarta.servlet.FilterConfig
Returns the names of the filter's initialization parameters as anEnumeration
ofString
objects, or an emptyEnumeration
if the filter has no initialization parameters.- Specified by:
getInitParameterNames
in interfaceFilterConfig
- Returns:
Enumeration
ofString
objects containing the names of the filter's 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
-