PersistentValve (Apache Tomcat 8.5.85 API Documentation)

Package org.apache.catalina.valves

## Class PersistentValve

- java.lang.Object
- - org.apache.catalina.util.LifecycleBase
  - - org.apache.catalina.util.LifecycleMBeanBase
    - - org.apache.catalina.valves.ValveBase
      - - org.apache.catalina.valves.PersistentValve

- All Implemented Interfaces:
    `javax.management.MBeanRegistration`, `Contained`, `JmxEnabled`, `Lifecycle`, `Valve`

      public class PersistentValve
      extends ValveBase

  Valve that implements per-request session persistence. It is intended to be used with non-sticky load-balancers.

  USAGE CONSTRAINT: To work correctly it requires a PersistentManager.

  USAGE CONSTRAINT: To work correctly it assumes only one request exists per session at any one time.

  Author:
    Jean-Frederic Clere

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

      `Lifecycle.SingleUse`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected java.util.regex.Pattern` | `filter` |

    - ### Fields inherited from class org.apache.catalina.valves.ValveBase

      `asyncSupported, container, containerLog, next, sm`

    - ### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

      `mserver`

    - ### 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

    Constructors
    Constructor | Description
    --- | ---
    `PersistentValve()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getFilter()` |
    `void` | `invoke​(Request request, Response response)` | Select the appropriate child Context to process this request, based on the specified request URI.
    `protected boolean` | `isRequestWithoutSession​(java.lang.String uri)` |
    `protected boolean` | `isSessionStale​(Session session, long timeNow)` | Indicate whether the session has been idle for longer than its expiration date as of the supplied time.
    `void` | `setContainer​(Container container)` | Set the Container with which this Valve is associated, if any.
    `void` | `setFilter​(java.lang.String filter)` |

    - ### Methods inherited from class org.apache.catalina.valves.ValveBase

      `backgroundProcess, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setNext, startInternal, stopInternal, toString`

    - ### Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

      `destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister`

    - ### Methods inherited from class org.apache.catalina.util.LifecycleBase

      `addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### filter

          protected java.util.regex.Pattern filter

  - ### Constructor Detail

    - #### PersistentValve

          public PersistentValve()

  - ### Method Detail

    - #### setContainer

          public void setContainer​(Container container)

      Description copied from class: `ValveBase`
      Set the Container with which this Valve is associated, if any.
      Specified by:
        `setContainer` in interface `Contained`
      Overrides:
        `setContainer` in class `ValveBase`
      Parameters:
        `container` - The new associated container

    - #### invoke

          public void invoke​(Request request,
                             Response response)
                      throws java.io.IOException,
                             ServletException

      Select the appropriate child Context to process this request, based on the specified request URI. If no matching Context can be found, return an appropriate HTTP error.
      Parameters:
        `request` - Request to be processed
        `response` - Response to be produced
      Throws:
        `java.io.IOException` - if an input/output error occurred
        `ServletException` - if a servlet error occurred

    - #### isSessionStale

          protected boolean isSessionStale​(Session session,
                                           long timeNow)

      Indicate whether the session has been idle for longer than its expiration date as of the supplied time. FIXME: Probably belongs in the Session class.
      Parameters:
        `session` - The session to check
        `timeNow` - The current time to check for
      Returns:
        `true` if the session is past its expiration

    - #### isRequestWithoutSession

          protected boolean isRequestWithoutSession​(java.lang.String uri)

    - #### getFilter

          public java.lang.String getFilter()

    - #### setFilter

          public void setFilter​(java.lang.String filter)