Package org.apache.catalina.valves

## Class ValveBase

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

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

Direct Known Subclasses:
  `AbstractAccessLogValve`, `AuthenticatorBase`, `CrawlerSessionManagerValve`, `ErrorReportValve`, `JDBCAccessLogValve`, `JvmRouteBinderValve`, `LoadBalancerDrainingValve`, `PersistentValve`, `RemoteIpValve`, `ReplicationValve`, `RequestFilterValve`, `RewriteValve`, `SemaphoreValve`, `SingleSignOn`, `SSLValve`, `StuckThreadDetectionValve`

    public abstract class ValveBase
    extends LifecycleMBeanBase
    implements Contained, Valve

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

### Nested Class Summary

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

`Lifecycle.SingleUse`

### Field Summary

Fields
`protected boolean` `asyncSupported` Does this valve support Servlet 3+ async requests?
`protected Container` `container` The Container whose pipeline this Valve is a component of.
`protected Log` `containerLog` Container log
`protected Valve` `next` The next Valve in the pipeline this Valve is a component of.
`protected static StringManager` `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
`ValveBase()`
`ValveBase​(boolean asyncSupported)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `backgroundProcess()` Execute a periodic task, such as reloading, etc.
`Container` `getContainer()` Get the `Container` with which this instance is associated.
`java.lang.String` `getDomainInternal()` Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`Valve` `getNext()` Returns the next Valve in this pipeline, or `null` if this is the last Valve in the pipeline.
`java.lang.String` `getObjectNameKeyProperties()` Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.
`protected void` `initInternal()` Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
`boolean` `isAsyncSupported()`
`void` `setAsyncSupported​(boolean asyncSupported)`
`void` `setContainer​(Container container)` Set the `Container` with which this instance is associated.
`void` `setNext​(Valve valve)` Set the next Valve in the pipeline containing this Valve.
`protected void` `startInternal()` Start this component and implement the requirements of `LifecycleBase.startInternal()`.
`protected void` `stopInternal()` Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.
`java.lang.String` `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`

### Methods inherited from interface org.apache.catalina.Valve

`invoke`

### Field Detail

#### sm

    protected static final StringManager sm

#### asyncSupported

    protected boolean asyncSupported

Does this valve support Servlet 3+ async requests?

#### container

    protected Container container

The Container whose pipeline this Valve is a component of.

#### containerLog

    protected Log containerLog

Container log

#### next

    protected Valve next

The next Valve in the pipeline this Valve is a component of.

### Constructor Detail

#### ValveBase

    public ValveBase()

#### ValveBase

    public ValveBase​(boolean asyncSupported)

### Method Detail

#### getContainer

    public Container getContainer()

Description copied from interface: `Contained`
Get the `Container` with which this instance is associated.

Specified by:
  `getContainer` in interface `Contained`
Returns:
  The Container with which this instance is associated or `null` if not associated with a Container

#### setContainer

    public void setContainer​(Container container)

Description copied from interface: `Contained`
Set the `Container` with which this instance is associated.

Specified by:
  `setContainer` in interface `Contained`
Parameters:
  `container` - The Container instance with which this instance is to be associated, or `null` to disassociate this instance from any Container

#### isAsyncSupported

    public boolean isAsyncSupported()

Specified by:
  `isAsyncSupported` in interface `Valve`

#### setAsyncSupported

    public void setAsyncSupported​(boolean asyncSupported)

#### getNext

    public Valve getNext()

Description copied from interface: `Valve`
Returns the next Valve in this pipeline, or `null` if this is the last Valve in the pipeline.

Specified by:
  `getNext` in interface `Valve`
Returns:
  the next Valve in the pipeline containing this Valve, or `null` if this is the last Valve in the pipeline.

#### setNext

    public void setNext​(Valve valve)

Description copied from interface: `Valve`
Set the next Valve in the pipeline containing this Valve.

Specified by:
  `setNext` in interface `Valve`
Parameters:
  `valve` - The new next valve, or `null` if none

#### backgroundProcess

    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.

The default implementation is NO-OP.

Specified by:
  `backgroundProcess` in interface `Valve`

#### initInternal

    protected void initInternal()
                         throws LifecycleException

Description copied from class: `LifecycleMBeanBase`
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.

Overrides:
  `initInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException` - If the initialisation fails

#### startInternal

    protected void startInternal()
                          throws LifecycleException

Start this component and implement the requirements of `LifecycleBase.startInternal()`.

Specified by:
  `startInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### stopInternal

    protected void stopInternal()
                         throws LifecycleException

Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.

Specified by:
  `stopInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### getObjectNameKeyProperties

    public java.lang.String getObjectNameKeyProperties()

Description copied from class: `LifecycleMBeanBase`
Allow sub-classes to specify the key properties component of the `ObjectName` that will be used to register this component.

Specified by:
  `getObjectNameKeyProperties` in class `LifecycleMBeanBase`
Returns:
  The string representation of the key properties component of the desired `ObjectName`

#### getDomainInternal

    public java.lang.String getDomainInternal()

Description copied from class: `LifecycleMBeanBase`
Method implemented by sub-classes to identify the domain in which MBeans should be registered.

Specified by:
  `getDomainInternal` in class `LifecycleMBeanBase`
Returns:
  The name of the domain to use to register MBeans.