[컴][웹] tomcat 의 server, service, engine, host, context 의 관계

tomcat hierarchical and modular architecture


Tomcat 의 구조

from : Advanced Tutorial on Tomcat 7


Tomcat instance 는 application container 들의 그룹으로 이뤄져 있다.

이 hierarchy 의 중요 요소(key component) 는 Catalina servlet engine 이다. Catalina servlet engine 는 Java Servlet API 에 정의된 spec. 의 실질적인 Java servlet container 의 구현이다.

server, service, engine, host, context 들은 모두 container 의 일종인데, 이 container 들은 모두 server.xml 에서 설정할 수 있다.



Server

Server 는 Tomcat instance 를 이야기 하는데, Server 가 Catalina servlet engine 전체를 표현한다고 볼 수 있다. 이 Tomcat instance 는 한개의 JVM process에 한개의 tomcat instance 가 존재한다. 그래서 Server 도 한개만 존재한다고 볼 수 있다.

이 Server 는 여러개의 Service 를 가질 수 있다.

Service

이 Connector 를 가지고 있는 녀석이 Service 인데, Service 는 이 Connector 를 여러개 가질 수 있다. 그리고 Engine 은 하나만 갖는다. 이 engine 이 connector 로 들어온 모든 request 를 처리한다.

Service.java 에서 주석을 보면, service 는 하나의 JVM instance 가 여러개의 service 를 가질 수 있으며, 각각의 service 는 독립적이다. 라고 한다.



StandardService#setContainer 를 보면 이미 존재하는 engine 은 털어내고(이 때 Engine 이 가지고 있는 Service 에 대한 reference 도 없앤다.) 새로 들어온 Engine 을 set 한다.(이 때 Engine 에게도 현재 Service 의 reference 를 넘겨준다.)





Connector

client application 에서 오는 request 나 client 로 가는 response 를 실질적으로 handling 하는 class 이다.



Host

Catalina <Engine> 의 instance 하나에 하나의 virtual host 가 정의되는데, 이 녀석을 정의해 주는 것이 <Host> 이다.



Host container 는 여러개의 Context 를 가질 수 있다. 이 context 가 우리가 주로 만들게 되는 web application 하나라고 생각하면 된다. 즉, 하나의 host 에 여러개의 web application 을 띄울 수 있다.




Reference


  1. Chapter 1. Apache Tomcat 7, Apress, Aleksa Vukotic and James Goodwill



댓글 없음:

댓글 쓰기