DIGITAL GURU
Java DSA Portfolio

Embedded Apache Tomcat

Understand embedded Apache Tomcat server configuration, thread pools, and port settings in Spring Boot.

Anuj Kumar Singh Written by Anuj Kumar Singh (Lead Engineer, 13+ yrs exp) 5 min read Verified Spring Boot 3+ Guide

Real-World Analogy

Embedded Tomcat is like a RV motorhome—the engine and living quarters are combined in 1 self-contained vehicle, so you do not need to book an external hotel (standalone server) everywhere you drive!

Embedded Server Architecture

Spring Boot includes embedded Apache Tomcat inside `spring-boot-starter-web`. Your application executes via `public static void main()` without installing external server software.

Key Server Configuration:

  • `server.port=8080`: Custom HTTP port.
  • `server.tomcat.threads.max=200`: Max worker request threads.
  • `server.tomcat.connection-timeout=20000`: Connection timeout in ms.

Production Code Example:

application.yml
server:
  port: 8080
  tomcat:
    threads:
      max: 200
      min-spare: 10
    accept-count: 100

Key Architectural Concepts & Best Practices:

When working with Embedded Apache Tomcat in enterprise Spring Boot applications, keep these key architectural guidelines in mind:

  • Separation of Concerns: Maintain a strict boundary between HTTP endpoints, service logic, and database persistence layers.
  • Framework Conventions: Rely on Spring Boot auto-configuration defaults whenever possible, overriding settings only via application.yml or @Configuration classes when customized behavior is required.
  • Production Monitoring & Reliability: Ensure proper exception handling, thread-safety, and resource cleanup to prevent memory leaks and unexpected runtime downtime.
  • Developer Ergonomics: Write clean, self-documenting code with modern Java features (Records, Lambdas, Streams) to simplify code reviews and maintenance.

Summary Takeaway:

Mastering Embedded Apache Tomcat ensures that your Java & Spring Boot backend microservices remain maintainable, secure, and compliant with modern enterprise software engineering standards.

Packaging

Packaged into a single executable Fat JAR via `mvn package` or `gradle bootJar`.