Class FilterValve

All Implemented Interfaces:
FilterConfig, MBeanRegistration, Contained, JmxEnabled, Lifecycle, Valve

public class FilterValve extends ValveBase implements FilterConfig

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 return null.
  • 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 or ServletResponse objects, or an exception will be thrown.
See Also:
  • Constructor Details

    • FilterValve

      public FilterValve()
  • Method Details

    • setFilterClass

      public void setFilterClass(String filterClassName)
      Sets the name of the class for the Filter.
      Parameters:
      filterClassName - The class name for the Filter.
    • setFilterClassName

      public void setFilterClassName(String filterClassName)
      Sets the name of the class for the Filter.
      Parameters:
      filterClassName - The class name for the Filter.
    • getFilterClassName

      public String getFilterClassName()
      Gets the name of the class for the Filter.
      Returns:
      The class name for the Filter.
    • addInitParam

      public void addInitParam(String paramName, String paramValue)
      Adds an initialization parameter for the Filter.
      Parameters:
      paramName - The name of the parameter.
      paramValue - The value of the parameter.
    • getFilterName

      public String getFilterName()
      Description copied from interface: jakarta.servlet.FilterConfig
      Get the name of the filter.
      Specified by:
      getFilterName in interface FilterConfig
      Returns:
      null
    • getServletContext

      public ServletContext getServletContext()
      Description copied from interface: jakarta.servlet.FilterConfig
      Returns a reference to the ServletContext in which the caller is executing.
      Specified by:
      getServletContext in interface FilterConfig
      Returns:
      the ServletContext. Note that this will be of limited use if the Valve/Filter is not attached to a <Context>.
      See Also:
    • getInitParameter

      public String getInitParameter(String name)
      Description copied from interface: jakarta.servlet.FilterConfig
      Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist.
      Specified by:
      getInitParameter in interface FilterConfig
      Parameters:
      name - String specifying the name of the initialization parameter
      Returns:
      String containing the value of the initialization parameter
    • getInitParameterNames

      public Enumeration<String> getInitParameterNames()
      Description copied from interface: jakarta.servlet.FilterConfig
      Returns the names of the filter's initialization parameters as an Enumeration of String objects, or an empty Enumeration if the filter has no initialization parameters.
      Specified by:
      getInitParameterNames in interface FilterConfig
      Returns:
      Enumeration of String objects containing the names of the filter's initialization parameters
    • startInternal

      protected void startInternal() throws LifecycleException
      Description copied from class: ValveBase
      Start this component and implement the requirements of LifecycleBase.startInternal().
      Overrides:
      startInternal in class ValveBase
      Throws:
      LifecycleException - if this component detects a fatal error that prevents this component from being used
    • stopInternal

      protected void stopInternal() throws LifecycleException
      Description copied from class: ValveBase
      Stop this component and implement the requirements of LifecycleBase.stopInternal().
      Overrides:
      stopInternal in class ValveBase
      Throws:
      LifecycleException - if this component detects a fatal error that prevents this component from being used
    • invoke

      public void invoke(Request request, Response response) throws IOException, ServletException
      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 interface Valve
      Parameters:
      request - The servlet request to be processed
      response - The servlet response to be created
      Throws:
      IOException - if an input/output error occurs, or is thrown by a subsequently invoked Valve, Filter, or Servlet
      ServletException - if a servlet error occurs, or is thrown by a subsequently invoked Valve, Filter, or Servlet