Apache Tomcat is a production-grade Java servlet container and web server. In production it deploys WAR applications and provides the full Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, and Jakarta WebSocket runtimes, along with HTTP/1.1, HTTP/2, and AJP connectors. It handles the complete request lifecycle: protocol parsing in Coyote, container routing and request processing in Catalina, JSP compilation in Jasper, EL evaluation, JNDI resource resolution, session management, authentication/authorization realms, TLS termination, and optional high-availability clustering through the Tribes channel. The embedded variant exposed via org.apache.catalina.startup.Tomcat is also widely used as a library to launch servlet containers from unit tests and standalone Java applications. The architecture is a layered, modular monolith: the Coyote connector layer owns network I/O and protocol state machines; Catalina owns the container hierarchy (Server, Service, Engine, Host, Context, Wrapper), valve pipelines, lifecycle management, and deployment; Jasper and the EL engine compile and execute JSP pages; and separate supporting subsystems provide WebSocket, JNDI naming, session replication, JMX management, and the manager web application. Key entry points are bin/catalina.sh and bin/startup.sh for the standalone server, the Bootstrap/Catalina classes, the embedded Tomcat class, and the manager2 webapp for administrative operations. External dependencies are largely optional: a Java runtime, optional Tomcat Native/OpenSSL for accelerated TLS, ECJ for JSP compilation, and JDBC drivers for database resources. Although this is not a data-research repository, it contains a very large and mature test suite including protocol conformance tests, regression tests tied to CVEs and bug reports, and performance harnesses that are deliberately excluded from normal CI. The codebase is actively maintained, tracks current Jakarta EE specifications, supports virtual threads and modern JDKs, and embeds vendored copies of libraries such as DBCP, Pool2, BCEL, and Commons FileUpload. It is substantial, occasionally legacy-heavy around clustering and JNI integrations, but consistently high in engineering rigor and deeply useful as both a server product and a reference implementation of servlet-container internals.
PrimeFaces is a mature, widely adopted UI component library for Jakarta Faces (JSF). In production it provides server-side JSF components (DataTable, Tree, DatePicker, Menu, Dialog, etc.) paired with client-side JavaScript/TypeScript widgets, enabling AJAX-driven, themeable web UIs for Java enterprise applications. The architecture is a multi-module Maven project: the core `primefaces` module contains component classes, renderers, models, events, validators, and utilities; `primefaces-cdk` is a custom annotation-driven code generation kit that produces component base implementations and taglib metadata; `primefaces-showcase` is a demo web application; and `primefaces-integration-tests` plus `primefaces-selenium` provide a Selenium-based testing framework with reusable page-object components. The library is distributed as a JAR and consumed by embedding it in JSF web applications, with entry points being the JSF component tags and the `PrimeFaces` JavaScript API.
SiteMesh 3 is a mature Java web-page decoration and layout framework that intercepts HTML responses (via servlet filter or Spring MVC view resolver), extracts content from the response body (title, head, body, meta tags, custom properties), and merges it into one or more decorator templates. It operates both online (as a servlet filter in Jakarta EE containers) and offline (static site generation via command-line, Ant task, or programmatic API). The core library is module `sitemesh` with no servlet runtime dependencies; additional modules provide integration with Spring MVC (`spring-webmvc-sitemesh`) and Spring Boot auto-configuration (`spring-boot-starter-sitemesh`). The architecture is pipeline-based: response buffering → tolerant HTML tokenization (JFlex-based `TagTokenizer`) → rule-based content processing (`CoreHtmlTagRuleBundle`, `DecoratorTagRuleBundle`) → decorator selection (`PathBasedDecoratorSelector`, `MetaTagBasedDecoratorSelector`) → decorator rendering via `<sitemesh:write>` and `<sitemesh:decorate>` tags. The project demonstrates high craftsmanship in several areas: a pluggable tag-rule bundle system (`TagRuleBundle`), an abstract buffering filter pattern (`ContentBufferingFilter`), a memory-efficient character appendable (`CharSequenceList`), and a path-mapping utility (`PathMapper`) generic enough for reuse outside the decoration context. The response interception layer (`HttpServletResponseBuffer`, `RoutablePrintWriter`, `RoutableServletOutputStream`) is a robust pattern for capturing and modifying servlet output. Container-specific workarounds (`ContainerTweaks`, `DispatchMode`) show deep understanding of servlet container quirks. Maintenance is active, with ongoing support for Jakarta EE 11, Spring Boot 4, and multiple servlet containers (Tomcat 8–11, Jetty 9–12). However, there is technical drift: the Javadoc at `docs/javadoc/3.1.x/` is outdated (Servlet 3–4 era), some configuration documentation references old snapshots, and the build system has configuration-cache workarounds. The project uses a multi-module Gradle setup with examples for Spring Boot, Micronaut, Javalin, and Struts, and includes performance benchmarks. Overall, it is a well-engineered library with a clear separation of concerns, suitable for reuse or extension.