# Package org.apache.catalina.valves

package org.apache.catalina.valves

This package contains a variety of small Valve implementations that do not warrant being packaged separately. In addition, there is a convenience base class (`ValveBase`) that supports the usual mechanisms for including custom Valves into the corresponding Pipeline.

Other packages that include Valves include `org.apache.tomcat.logger` and `org.apache.tomcat.security`.

- Related Packages
  Package
  Description
  org.apache.catalina
  org.apache.catalina.valves.rewrite
- Class
  Description
  AbstractAccessLogValve
  Abstract implementation of the Valve interface that generates a web server access log with the detailed line contents matching a configurable pattern.
  AbstractAccessLogValve.AccessLogElement
  AccessLogElement writes the partial message into the buffer.
  AbstractAccessLogValve.ByteSentElement
  write bytes sent, excluding HTTP headers - %b, %B
  AbstractAccessLogValve.CachedElement
  Marks an AccessLogElement as needing to be have the value cached at the start of the request rather than just recorded at the end as the source data for the element may not be available at the end of the request.
  AbstractAccessLogValve.ConnectionStatusElement
  Write connection status when response is completed - %X
  AbstractAccessLogValve.CookieElement
  write a specific cookie - %{xxx}c
  AbstractAccessLogValve.DateFormatCache
  Cache structure for formatted timestamps based on seconds.
  AbstractAccessLogValve.ElapsedTimeElement
  write time taken to process the request - %D, %T
  AbstractAccessLogValve.FirstByteTimeElement
  write time until first byte is written (commit time) in millis - %F
  AbstractAccessLogValve.HeaderElement
  write incoming headers - %{xxx}i
  AbstractAccessLogValve.HttpStatusCodeElement
  write HTTP status code of the response - %s
  AbstractAccessLogValve.LocalAddrElement
  write local IP address - %A
  AbstractAccessLogValve.LogicalUserNameElement
  write remote logical username from identd (always returns '-') - %l
  AbstractAccessLogValve.MethodElement
  write request method (GET, POST, etc.) - %m
  AbstractAccessLogValve.QueryElement
  write Query string (prepended with a '?'
  AbstractAccessLogValve.RequestAttributeElement
  write an attribute in the ServletRequest - %{xxx}r
  AbstractAccessLogValve.RequestElement
  write first line of the request (method and request URI) - %r
  AbstractAccessLogValve.RequestURIElement
  write requested URL path - %U
  AbstractAccessLogValve.ResponseHeaderElement
  write a specific response header - %{xxx}o
  AbstractAccessLogValve.SessionAttributeElement
  write an attribute in the HttpSession - %{xxx}s
  AbstractAccessLogValve.SessionIdElement
  write user session ID - %S
  AbstractAccessLogValve.StringElement
  write any string
  AbstractAccessLogValve.ThreadNameElement
  write thread name - %I
  AbstractAccessLogValve.UserElement
  write remote user that was authenticated (if any), else '-' - %u
  AccessLogValve
  This is a concrete implementation of `AbstractAccessLogValve` that outputs the access log to a file.
  Constants
  Manifest constants for the `org.apache.catalina.valves` package.
  Constants.AccessLog
  CrawlerSessionManagerValve
  Web crawlers can trigger the creation of many thousands of sessions as they crawl a site which may result in significant memory consumption.
  ErrorReportValve
  Implementation of a Valve that outputs HTML error pages.
  ExtendedAccessLogValve
  An implementation of the W3c Extended Log File Format.
  ExtendedAccessLogValve.CookieElement
  ExtendedAccessLogValve.DateElement
  ExtendedAccessLogValve.PatternTokenizer
  ExtendedAccessLogValve.RequestAttributeElement
  ExtendedAccessLogValve.RequestHeaderElement
  ExtendedAccessLogValve.RequestParameterElement
  ExtendedAccessLogValve.ResponseAllHeaderElement
  write a specific response header - x-O(xxx)
  ExtendedAccessLogValve.ResponseHeaderElement
  ExtendedAccessLogValve.ServletContextElement
  ExtendedAccessLogValve.SessionAttributeElement
  ExtendedAccessLogValve.TimeElement
  HealthCheckValve
  Simple Valve that responds to cloud orchestrators health checks.
  JDBCAccessLogValve
  Deprecated.
  Non scalable design, and not documented.
  JsonAccessLogValve
  Access log valve derivative that rewrites entries as JSON.
  JsonAccessLogValve.CharElement
  write any char
  JsonErrorReportValve
  Implementation of a Valve that outputs error jsons.
  LoadBalancerDrainingValve
  A Valve to detect situations where a load-balanced node receiving a request has been deactivated by the load balancer (JK_LB_ACTIVATION=DIS) and the incoming request has no valid session.
  PersistentValve
  Valve that implements per-request session persistence.
  ProxyErrorReportValve
  Implementation of a Valve that proxies or redirects error reporting to other urls.
  RemoteAddrValve
  Concrete implementation of `RequestFilterValve` that filters based on the string representation of the remote client's IP address optionally combined with the server connector port number.
  RemoteCIDRValve
  RemoteHostValve
  Concrete implementation of `RequestFilterValve` that filters based on the remote client's host name optionally combined with the server connector port number.
  RemoteIpValve
  Tomcat port of mod_remoteip, this valve replaces the apparent client remote IP address and hostname for the request with the IP address list presented by a proxy or a load balancer via a request headers (e.g.
  RequestFilterValve
  Implementation of a Valve that performs filtering based on comparing the appropriate request property (selected based on which subclass you choose to configure into your Container's pipeline) against the regular expressions configured for this Valve.
  SemaphoreValve
  Implementation of a Valve that limits concurrency.
  SSLValve
  When using mod_proxy_http, the client SSL information is not included in the protocol (unlike mod_jk and mod_proxy_ajp).
  StuckThreadDetectionValve
  This valve allows to detect requests that take a long time to process, which might indicate that the thread that is processing it is stuck.
  ValveBase
  Convenience base class for implementations of the Valve interface.