톰캣 너는 도대체...? WAS TOMCAT의 정체 파헤치기!
톰캣이란 무엇인가
웹 수업을 들으면 갑자기 나타나는 톰캣.. WAS 라고 하는데... 웹 서버라고 하는데....
도대체 넌 누구냐!!!
스프링 책을 읽다가.... 한 번 구글링으로 찾아보면 이거구나 하다가도 어떻게 작동되는지 모르겠는 톰캣에 대해 정리해 본다.
톰캣!! 고양이!
그래! 톰캣 너는 뭐지??? 나무위키를 검색해본다.
아파치 소프트웨어 재단에서 개발하는 Java 기반의 서블릿 컨테이너이자 웹 서버. JSP/Spring으로 웹사이트를 구축한다면 톰캣은 거의 반드시 사용된다고 볼 수 있다. Tomcat은 수컷 고양이를 뜻하는 영어 단어이다.
Client -------------------- WAS(Web Application Server) -------------------- Database
->Request l DB Connection
Response<- l
Web Server
+
Web Container -> Thread pool -> Servlet(init()/service()-doGet(),doPost()/destroy())
[요약/참고]
WAS = 웹 서버 + 웹 컨테이너(서블릿 컨테이너)
cf) 웹 서버: 웹페이지를 클라이언트에게 전송하는 서버(클라이언트가 브라우저에 URL을 입력하면 웹 서버가 HTTP 프로토콜 - HTTP Response, HTTP Request 을 이용해서 데이터 전송), 정적 컨텐츠(html/css 등) 처리
cf) 서블릿 컨테이너: 서블릿들의 생성, 실행 등을 담당. 서버에 만들어진 서블릿을 관리. 서블릿과 웹서버 통신, 동적 컨텐츠(DB 연동)
[서블릿 컨테이너 작동 원리]
웹서버가 HTTP 요청 받음
-> 웹서버가 요청을 서블릿 컨테이너로 보냄
-> 서블릿이 컨테이너에 없다면, 서블릿을 검색해서 컨테이너 주소공간에 로드
-> web.xml을 참조해서 서블릿에 대한 쓰레드 생성(HTTPServletRequest/Response 객체 생성)
-> 컨테이너가 서블릿의 init() 메소드 호출 (처음만)
-> 컨테이너가 서블릿의 service() - doGet()/doPost() 메소드를 호출하여 HTTP 요청 처리 (요청을 읽고 Response에 담는다)
-> 서블릿은 컨테이너 주소에 남아있고 다른 HTTP 요청 처리 가능
-> 웹 서버에 전달하고 웹 서버는 동적으로 생성 결과를 올바른 위치에 반환
-> 생성된 쓰레드는 끝, HTTPServletRequest/Response 객체는 제거
톰캣에는 오로지 서블릿/JSP 및 HTTP 처리 엔진만 들어있으며, 여기에 J2EE를 추가하여 엔터프라이즈 버전으로 배포중인 웹 애플리케이션 서버 Apache TomEE도 있다.
* 출처 : 나무위키