Tomcat
🐱 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 실행을 가능하게 해주는 구성요소다.
🔄 요청 처리 흐름
- 클라이언트가 요청을 보낸다.
- Tomcat이
HttpServletRequest,HttpServletResponse객체를 만든다. - 적절한 Servlet으로 요청을 전달한다.
- Servlet이 응답을 생성한다.
- Tomcat이 클라이언트에게 응답을 반환한다.
🧩 스레드 처리
- 요청마다 스레드가 할당된다.
- 여러 요청을 동시에 처리할 수 있다.
- 스레드 안전성을 고려해야 한다.
[!important] 주의 공유 자원에 대한 접근은 동기화가 필요할 수 있다. 요청 처리 로직에서 상태를 무분별하게 공유하면 문제가 생길 수 있다.
🛠️ 실무에서의 위치
- Web Server 뒤에서 WAS 역할을 한다.
- Apache, Nginx와 함께 앞단/뒷단 구조로 구성할 수 있다.
- 개발 환경과 운영 환경에서 모두 자주 사용된다.
⚠️ 주의할 점
- 정적 파일만 제공하는 웹서버와는 역할이 다르다.
- 과도한 요청이 들어오면 스레드와 리소스 사용을 주의해야 한다.
- 설정에 따라 포트, 메모리, 연결 수를 관리해야 한다.
🧾 정리
Tomcat은 Java 웹 애플리케이션을 실행하는 핵심 WAS/서블릿 컨테이너다. 요청 처리, 서블릿 생명주기, 스레드 기반 처리 방식을 이해하는 데 중요하다.
댓글남기기