[Spring] Apache Tomcat

유진·2025년 3월 13일

Spring

목록 보기
8/11

Bean

빈은 스프링 컨테이너가 관리하는 객체를 의미한다.
xml 파일에 빈을 정의하면 (<bean>) 스프링 컨테이너가 클래스 객체를 만든다.
빈은 맵에 key/value 형태로 저장되고 관리된다.

Spring Container

스프링 컨테이너는 빈의 저장소로 빈을 저장 및 관리(생성, 소멸, 연결)한다.
1. BeanFactory - 빈을 생성하고 연결하는 등 기본 기능을 저장한 인터페이스
2. ApplicationContext - BeanFactory를 확장하여 여러 기능을 추가 정의한 인터페이스

사실상 Spring Container는 ApplicationContext와 거의 동일하다고 보면 된다.

설정을 XML로 하냐 JavaConfing(javafile)로 하냐
웹으로 하냐 웹이 아닌 다른걸로 하느냐에 따라 사용하는게 다르다
요즘은 xml보다는 javaconfig를 많이 사용한다고 한다

Apache Tomcat 구성 요소

서버

톰캣에서 서버는 모든 컨테이너를 표현하는 요소이다.

서비스

서비스는 서버내에 있는 중간다리 컴포넌트로, 하나의 엔진과 하나 이상의 커넥터를 묶어놓은 컴포넌트다.

엔진

톰캣의 핵심 처리 엔진이다.
특정 서비스의 요청 처리 파이프라인을 나타낸다.
하나의 서비스는 여러 커넥터를 가질 수 있으며, 엔진은 이런 커넥터로부터 요청을 받아 처리하고 적절한 커넥터에 응답을 돌려줘 사용자에게 전달한다.
여러개의 호스트를 관리한다.

호스트

호스트는 톰캣 서버에서 www.abc.com과 같은 네트워크 이름과 관련이 있다.
엔진은 여러 호스트를 포함할 수 있고, 각 호스트는 별칭을 지원한다.
(하나의 웹 서비스라고 생각하면 됨)

커넥터

사용자와의 소통을 담당한다. (사용차의 요청 처리)
톰캣에서는 여러 종류의 커넥트를 사용할 수 있다

  • HTPP 커넥터 : 대부분의 HTTP 통신에 사용, 독립형 톰캐새 실행의 경우 사용
  • AJP 커넥트 : AJP프로토콜을 구현하여 Apache HTTPD 서버와 같은 웹 서버와 연결할 때 사용한다.

컨텍스트

웹 어플리케이션을 나타낸다.
한 호스트는 여러 컨텍스트를 포함할 수 있으며, 각 컨텍스트는 고유한 경로를 가진다.

구성요소 관계

  • 서버:서비스 = 1:N -> 하나의 서버는 여러개의 서비스를 가질 수 있다.
  • 서비스:엔진:커넥터 = 1:1:N -> 하나의 서비스는 하나의 엔진을 가질 수 있고, 하나의 엔진은 여러개의 커넥터와 연결 가능한다.
  • 엔진:호스트 = 1:N -> 하나의 엔진은 하나의 호스트를 가진다.
  • 호스트:컨텍스트 = 1:N -> 하나의 호스트에는 여러 컨텍스트가 있을 수 있다.

동작 흐름

  1. 사용자의 요청이 커넥터로 들어간다.
  2. 커넥터는 해당 커넥터가 속한 서비스의 엔진으로 요청을 전달한다.
  3. 엔진은 요청에 알맞은 호스트를 선택하여 전달한다.
  4. 요청 경로에 따라 적절한 컨텍스트로 전달한다.
  5. 컨텍스트가 요청을 처리하여 응답을 생성하면, 요청이 전달된 역방향으로 응답을 전달한다.

0개의 댓글