Designing a Tomcat Valve for Request Logging: Architecture Note
Architecture note for a Tomcat Valve: requirements, minimal design, trust boundaries, operational checks, failure modes, and triggers for redesign.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Architecture note for a Tomcat Valve: requirements, minimal design, trust boundaries, operational checks, failure modes, and triggers for redesign.
Configure Tomcat 10 for HTTP/2 by adding an NIO2 HTTPS connector with ALPN support, validate with curl and DevTools, and recover by reverting to the backup if necessary.
Learn how to tune the Tomcat Executor to prevent CPU exhaustion and connection refusals. This guide covers maxThreads, acceptCount, and the risks of thread starvation.
Clients hit Tomcat 400 Bad Request when request headers exceed the connector’s maxHttpHeaderSize. This guide walks through symptoms, diagnostics, configuration changes, verification, and escalation steps to resolve the issue on Tomcat 9/10.
Learn how to tune Tomcat's NIO connector by balancing maxThreads, maxConnections, and acceptCount to prevent connection refusals and CPU thrashing in high-traffic apps.
Learn how Tomcat’s NIO connector reduces thread overhead for high‑concurrency apps, with a concrete config example, monitoring tips, and trade‑off analysis.
Goal Determine whether Tomcat’s built‑in leak prevention (JreMemoryLeakPreventionListener and the clearReferences* attributes) reliably isolates a web application’s classloader when third‑party JDBC drivers and thread‑local caches are present. Constraints and uncertainty JreMemoryLeakPreventionListener pre‑loads known JDK classes at server start, but drivers
Goal: shrink the memory footprint of a low-traffic Tomcat deployment enough to fit a cheaper hosting tier, by tuning the HTTP Connector's documented thread-pool limits rather than the heap alone. Two documented mechanisms are in play. The connector exposes maxThreads (long-standing default 200) and minSpareThreads (default 10), and worker threads reserve JVM
Goal In a multi‑region deployment we want each host’s access log to record timestamps in the local zone of that host, rather than inheriting the JVM default. This would simplify correlation of logs across data centers and avoid the need to adjust for daylight‑saving changes on a per‑host basis. Current Constraints The AccessLogValve in Tomcat 9 and 10 render