How Tomcat Wroks(톰캣 최종 분석) - Tomcat 4&5 Reading Summary
들어가면서
Servlet Container의 작동원리
서블릿 컨테이너가 서블릿에 대한 요청을 처리할 때 기본적으로 하는 일은 세가지
- 요청 객체(Request object)를 생성하고, 호출된 서블릿이 사용할 파라미터, 해더, 쿠키, 질의문(Query String), URI와 같은 정보를 이 요청 객체에 채운다.
요청 객체는 javax.servlet.ServletRequest나 javax.servlet.http.HttpServletRequest 인터페이스(Interface)의 인스턴스(Instance)이다. - 서블릿이 웹 클라이언트에 응답을 보낼 때 사용할 응답 객체(response object)를 생성한다. 응답 객체는 javax.servlet.ServletResponse나 javax.servlet.http.HttpServletResponse 인터페이스(Interface)의 인스턴스(Instance)이다.
- 서블릿의 service 메소드(Method)에 요청 객체와 응답 객체를 전달해 호출한다. 여기서 서블릿은 요청 객체로 부터 값을 읽어들이고 응답 객체에 값을 쓴다.
Catalina 구성도
Catalina는 세련되게 설계되고 개발된, 매우 정교한 소프트웨어의 일부분이며 모듈화 되어있다.
Connector는 요청을 Container에 연결해주는 Module.
Connector의 역할은 전달받은 각 HTTP 요청에 대해 요청 객체(Request object)와 응답 객체(Response object)를 구성하고, Container에 전달하는 것이다. Container는 Connector로부터 요청 객체(Request object)와 응답 객체(Response object)를 전달 받고, Servlet의 service method를 호출할 책임을 진다.
예를 들어 Servlet를 load하고, 사용자를 인증하고, 해당 사용자의 Session을 갱신 하는 등의 많은 일들이 Servlet의 service method를 호출하기 전에 수행돼야 한다. 따라서 Container가 각각의 작업을 위해 서로 다른 여러 모듈을 사용한다. 사용자의 Session을 처리하는 Manager Module, Servlet class를 Load하는 Loader Module등 여러 Module이 존재한다.
이 글은 스프링노트에서 작성되었습니다.