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

Interface Summary
AbstractAccessLogValve.AccessLogElement: AccessLogElement writes the partial message into the buffer.
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.

Class Summary
AbstractAccessLogValve: Abstract implementation of the Valve interface that generates a web server access log with the detailed line contents matching a configurable pattern.
AbstractAccessLogValve.ByteSentElement: write bytes sent, excluding HTTP headers - %b, %B
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
JDBCAccessLogValve: This Tomcat extension logs server access directly to a database, and can be used instead of the regular file-based access log implemented in AccessLogValve.
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.