우테코에서 톰캣 구현 미션을 하면서 구성요소와 동작 과정을 짧게 정리했다.
톰캣(WAS) 의 역할
- 서블릿 객체 관리(생성, 초기화, 호출, 종료)
- HttpServletRequest, HttpServletResponse 생성
톰캣 컴포넌트 구성
- Coyote(HTTP Component)
- 톰캣에 TCP를 통한 프로토콜 지원
- Coyote는 HTTP 1.1 및 2 프로토콜을 웹 서버로 지원하는 Tomcat용 커넥터 구성 요소. 이를 통해 명목상 Java 서블릿 또는 JSP 컨테이너인 Catalina가 로컬 파일을 HTTP 문서로 제공하는 일반 웹 서버로도 작동할 수 있다. Coyote는 특정 포트에서 서버로 들어오는 연결을 수신하고 Tomcat 엔진에 요청을 전달하여 요청을 처리하고 요청하는 클라이언트에 응답을 보낸다.
- Coyote는 HTTP 1.1 및 2 프로토콜을 웹 서버로 지원하는 Tomcat용 커넥터 구성 요소.
- Catalina(Servlet Container)
- Java Servlet을 호스팅하는 환경
- Jasper(JSP Engine)
- 실제 JSP 페이지의 요청을 처리하는 Servlet
동작 과정
- HTTP 요청을 Coyote 에서 받아서 Catalina로 전달한다.
- Catalina에서 전달받은 HTTP 요청을 처리할 웹 어플리케이션을 찾는다.
- 요청된 Servlet을 통해 생성된 jsp 파일들이 호출될 때, Jasper이 Validation Check / Complie 등을 수행한다.
- Coyote가 HTTP요청을 받으면 Catalina 서블릿 컨테이너에서 요청중에서 java웹 어플리케이션을 해석하는데, 그중에 jsp에 관한 요청 일때 Jasper가 담당해서 처리.
참고
https://en.wikipedia.org/wiki/Apache_Tomcat
https://medium.com/@js230023/jasper와-catalina-ea11a337945f