Server/Tomcat

Tomcat 작동 원리_2

BeomJun.Kwon 2022. 3. 29. 10:40

 

Tomcat 작동 원리_2

 

Tomcat을 구성하는 큰 단위로는 다음의 3가지

  • Coyote (HTTP Component) : Tomcat에 TCP를 통한 프로토콜 지원
  • Catalina (Servlet Container) : Java Servlet을 호스팅하는 환경
  • Jasper (JSP Engine) : 실제 JSP 페이지의 요청을 처리하는 Servlet

 

 

 

 

 

Tomcat은 Java로 작성된 Program이기 때문에 JVM(Java Virtual Machine) 위에서 동작. 하나의 JVM 에서 하나의 Tomcat Instance(Server)가 하나의 Process로써 동작

하나의 Server에는 여러 개의 Service 가 존재할 수 있음. 각각의 Service는 1개의 Engine과 여러 개의 Connector로 구성

Engine은 Catalina Servlet Engine이라고도 불리며, 정의된 Connector로 들어온 요청을 하위에 있는 해당 Host에게 전달해주는 역할을 수행

하나의 Engine에는 여러 개의 Host가 존재할 수 있음. Host는 가상호스트 이름을 나타내며, 호스트 이름이 곧 url에 매핑. (ex : http://hostname/ ).

하나의 Host에는 여러 개의 Context가 존재할 수 있음. Context는 하나의 Web Application을 나타내며 주로 *.war 파일의 형태로 배포가 됨.

Tomcat Server가 요청을 받으면, Catalina (Tomcat Engine)가 요청에 맞는 Context (Context path)를 찾고, Context는 자신이 설정된 어플리케이션의 deployment descriptor file (web.xml)을 기반으로 전달받은 요청을 서블릿에게 전달하여 처리되도록 합니다.

 

 

 

TEST 진행

  1. Tomcat8 Site Download1 → webapps folder에 oneservice.war → Start Server

                                      → webapps folder에 twoservice.war → Start Server

  2. Tomcat8 Site Download2 → webapps folder에 threeservice.war → Start Server

  3. Download1, Download2 Process는 2개 올라감.

     // Eclipse에서 실행시 Eclipse Process에서 JVM(TM)으로 실행되는것 확인

 

 

결론

 - Tomcat 설치 : Server

 - 다중 Servcie : https://solbel.tistory.com/632

 - webapps *.war : Host

 

 

 

 

클라이언트 HTTP Request > Catalina > Context > Servlet > 클라이언트 Response 순으로 처리

 

 

 

 

  1. Http Request를 Servlet Container에 전송
  2. Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성
  3. 사용자가 요청한 URL을 분석해 어느 서블릿에 대한 요청인지 탐색
  4. 만약 해당 서블릿이 한 번도 실행된 적 없거나, 현재 메모리에 생성된 인스턴스가 없다면 새로 인스턴스를 생성 고 init() 메소드를 실행하여 초기화한 뒤 스레드를 하나 생성 이미 인스턴스가 존재할 경우에는 스레드만 하나 생성  (각 서블릿 인스턴스는 서블릿 컨테이너 당 하나만 존재하기 때문)
  5. 컨테이너는 서블릿 service() 메소드를 호출하며, POST, GET 여부에 따라 doGet() 또는 doPost()를 호출
  6. 실행된 메소드는 동적인 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보냄
  7. 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸

 

 

 

 

 

 

 

 

 

 

 

 

(참조) https://exhibitlove.tistory.com/312

(참조) https://www.lesstif.com/1stb/%EC%84%A4%EC%A0%95%EA%B3%BC-%EB%B0%B0%ED%8F%AC-18219510.html

(참조) https://kchanguk.tistory.com/2

(참조) https://solbel.tistory.com/632

(참조) https://kadensungbincho.tistory.com/62

 

 

'Server > Tomcat' 카테고리의 다른 글

Eclipse, Tomcat, Maven 상호작용 개요  (0) 2024.01.10
Tomcat Multi instance  (0) 2022.08.03
Tomcat 작동 원리_1  (0) 2022.03.29