🐱 Tomcat이란?

정의

Tomcat은 Java Servlet과 JSP를 실행하는 대표적인 서블릿 컨테이너이자 WAS이다. Java 웹 애플리케이션을 실행하기 위한 기본 런타임 역할을 한다.

🎯 사용하는 이유

  • Java 웹 애플리케이션을 실행할 수 있다.
  • Servlet, JSP를 관리할 수 있다.
  • 개발 환경에서 사용하기 쉽다.
  • Web Server와 함께 구성할 수 있다.

포인트

Tomcat은 단순한 웹서버가 아니라 서블릿을 실행하고 요청을 처리하는 애플리케이션 서버 쪽 역할을 한다.

🧱 주요 역할

  • Servlet 실행
  • JSP 처리
  • 요청/응답 객체 생성
  • 서블릿 생명주기 관리
  • 멀티스레드 요청 처리

🧩 Tomcat 주요 구성요소

Coyote

  • HTTP, AJP 같은 커넥터 역할을 담당한다.
  • 외부 요청을 Tomcat 내부로 전달하는 입구에 가깝다.
  • 네트워크 프로토콜 처리와 연결 관리에 관여한다.

Catalina

  • Tomcat의 핵심 서블릿 컨테이너 엔진이다.
  • Servlet 생명주기 관리와 요청 분배를 담당한다.
  • 실제로 요청을 어떤 서블릿에 보낼지 결정하는 중심부다.

Jasper

  • JSP를 Servlet 코드로 변환하는 엔진이다.
  • JSP 페이지를 컴파일 가능한 Java 코드로 바꾼다.
  • JSP 실행을 가능하게 해주는 구성요소다.

🔄 요청 처리 흐름

  1. 클라이언트가 요청을 보낸다.
  2. Tomcat이 HttpServletRequest, HttpServletResponse 객체를 만든다.
  3. 적절한 Servlet으로 요청을 전달한다.
  4. Servlet이 응답을 생성한다.
  5. Tomcat이 클라이언트에게 응답을 반환한다.

🧩 스레드 처리

  • 요청마다 스레드가 할당된다.
  • 여러 요청을 동시에 처리할 수 있다.
  • 스레드 안전성을 고려해야 한다.

[!important] 주의 공유 자원에 대한 접근은 동기화가 필요할 수 있다. 요청 처리 로직에서 상태를 무분별하게 공유하면 문제가 생길 수 있다.

🛠️ 실무에서의 위치

  • Web Server 뒤에서 WAS 역할을 한다.
  • Apache, Nginx와 함께 앞단/뒷단 구조로 구성할 수 있다.
  • 개발 환경과 운영 환경에서 모두 자주 사용된다.

⚠️ 주의할 점

  • 정적 파일만 제공하는 웹서버와는 역할이 다르다.
  • 과도한 요청이 들어오면 스레드와 리소스 사용을 주의해야 한다.
  • 설정에 따라 포트, 메모리, 연결 수를 관리해야 한다.

🧾 정리

Tomcat은 Java 웹 애플리케이션을 실행하는 핵심 WAS/서블릿 컨테이너다. 요청 처리, 서블릿 생명주기, 스레드 기반 처리 방식을 이해하는 데 중요하다.


연결문서

댓글남기기