Server

Apache Tomcat 설명

안녕고래 2023. 10. 9. 22:36

Apache Tomcat (WAS) = Apache(Web Server) + Tomcat(Web Container)

- Dynamic Web Page

 

Web Server

- 정적파일 처리(image, html, css, javascript) Static Web Page
- 동적파일은 Web Container로 요청(jsp, servlet) 

 

Web Container

 - Dynamic

 - 동적파일 처리(비즈니스 로직 처리, DB조회 등)

 

Apache tomcat 5.5 이후 부터는 위에서 언급한대로 Web server의 기능인 httpd(웹서비스 데몬) native 모듈을 가지고와서 정적파일을 처리하기 때문에 별도의 Web server 기능에 뒤쳐지지 않는 정적파일 처리를 할 수 있습니다.

 

 

 

Server start 단계
Web server init
Root WebApplicationContext 로딩
Web server start

 

Client 호출 단계

 

Client -> Web server 으로 request 보냄
동적 Web server -> Servlet container로 전달
Servlet container 쓰레드 생성
DispatcherServlet init (서블릿 생성 안되어 있을경우)
생성된 쓰레드에서 DispatcherServlet service() 메서드 호출
HandlerMapping을 통해 매핑 컨트롤러 조회
HandlerAdapter를 통해 매핑 컨트롤러에 request 전달
개발자가 구현한 Controller -> Service -> Repository … 동작

 

 

2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5-3. protected doGet(HttpServletRequest request, HttpServletResponse response)
6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
7. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

 

 

 

[참고]

https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80

 

https://webclub.tistory.com/333

 

https://tecoble.techcourse.co.kr/post/2021-05-24-apache-tomcat/

 

https://velog.io/@falling_star3/web-Web-Server%EC%99%80-WASWeb-Application-Server

 

https://hazel-developer.tistory.com/154

 

https://javacpro.tistory.com/43

 

https://taes-k.github.io/2020/02/16/servlet-container-spring-container/