본문 바로가기
Spring Framework

아파치 톰캣 서버

by xogns93 2024. 10. 7.

Apache Tomcat 서버는 자바 서블릿JSP 기반의 웹 애플리케이션을 실행하는 서블릿 컨테이너입니다. Tomcat의 구성 요소는 각각의 기능을 담당하며, 이들은 서로 협력하여 웹 애플리케이션을 실행하고 관리합니다. 각 구성 요소는 Tomcat 서버의 설정 파일(server.xml)에서 설정할 수 있으며, 이를 통해 Tomcat의 동작을 제어할 수 있습니다.

1. Service

<Service>는 Tomcat 서버 내에서 요청을 처리하는 기능의 집합입니다. ServiceEngineConnector를 포함하며, 하나의 Service는 여러 Connector를 가질 수 있고, 하나의 Engine과 연결됩니다. Service는 클라이언트의 요청을 적절한 Engine에 전달하여 처리합니다.

예시:

<Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" />
    <Engine name="Catalina" defaultHost="localhost" />
</Service>

2. Engine

<Engine>은 Tomcat의 요청 처리 계층으로, Connector를 통해 들어오는 요청을 Host에 전달하고 서블릿을 실행하는 역할을 합니다. Tomcat에는 하나의 Engine만 존재하며, 여러 Host를 관리할 수 있습니다. Engine은 요청의 처리 로직을 담당하며, 각 Host로 요청을 라우팅합니다.

예시:

<Engine name="Catalina" defaultHost="localhost">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" />
</Engine>

3. Realm

<Realm>은 Tomcat에서 인증권한 부여(Authorization)를 처리하는 보안 구성 요소입니다. Realm은 사용자의 아이디와 비밀번호를 확인하고, 그 사용자가 특정 자원에 접근할 수 있는 권한을 가지고 있는지 검사합니다. Tomcat은 다양한 종류의 Realm(데이터베이스, 파일, LDAP 등)을 지원하며, 이를 통해 인증 및 권한 부여를 구성할 수 있습니다.

예시:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />

4. Connector

<Connector>는 Tomcat이 외부와 통신하는 입출력 지점입니다. Connector는 클라이언트로부터 HTTP 요청을 받아들여 이를 Engine에 전달하며, HTTP, HTTPS, AJP 등의 다양한 프로토콜을 지원합니다. Tomcat 서버는 여러 Connector를 가질 수 있습니다.

예시:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

5. Valve

<Valve>Tomcat의 요청 처리 과정에서 추가적인 작업을 수행하는 필터와 같은 역할을 합니다. ValveEngine, Host, 또는 Context에서 요청이나 응답을 가로채고, 그 위에 보안 검사, 로깅, 트래픽 제어 등의 작업을 추가할 수 있습니다. ValveFilter와 유사하지만, 더 낮은 수준에서 동작합니다.

예시:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" />

6. Host

<Host>가상 호스트(Virtual Host)를 정의하며, 여러 개의 웹 애플리케이션을 관리할 수 있는 논리적인 단위입니다. Host도메인 이름을 기반으로 각기 다른 애플리케이션을 서비스하는 데 사용됩니다. 하나의 Engine 내에 여러 Host를 둘 수 있으며, 각각의 Host는 서로 다른 애플리케이션을 처리할 수 있습니다.

예시:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="ROOT" />
</Host>

7. Context

<Context>웹 애플리케이션의 구성 요소로, 웹 애플리케이션의 실행 환경을 정의합니다. Context는 각 애플리케이션의 경로, 기본 설정, 리소스 등의 정보를 포함하며, Host 내에서 여러 개의 Context를 가질 수 있습니다. Tomcat은 각 웹 애플리케이션을 Context 단위로 관리합니다.

예시:

<Context path="/myapp" docBase="myapp" reloadable="true" />

8. Servlet

서블릿(Servlet)자바 코드로 작성된 서버 측 프로그램으로, HTTP 요청을 처리하고 동적인 웹 페이지를 생성합니다. Tomcat은 서블릿 컨테이너로서, 서블릿을 실행하고 클라이언트 요청을 처리합니다. 서블릿은 주로 요청 처리, 비즈니스 로직 실행, 응답 생성을 담당합니다.

예시:

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        response.getWriter().print("Hello World!");
    }
}

9. Logger

Logger는 Tomcat의 로그 기록을 담당하는 구성 요소입니다. Valve와 유사하게 Logger요청 처리 과정을 기록하거나 애플리케이션의 동작 상태를 추적하는 데 사용됩니다. Tomcat에서는 주로 AccessLogValveCommons Logging을 사용하여 로깅을 설정합니다.

예시:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" />

10. TSP (Tomcat Service Provider)

TSP는 Tomcat에서 별도로 정의된 개념은 아니며, 일반적으로 서비스 제공자를 의미할 수 있습니다. Tomcat Service Provider라고 하면 Tomcat의 플러그인 또는 서비스 제공자 인터페이스(SPI)를 통해 다양한 기능을 추가하거나 확장할 수 있는 서비스들을 가리킬 수 있습니다. 예를 들어, 사용자 정의 인증 시스템을 추가하거나 보안 관련 기능을 확장할 때 SPI 패턴을 사용하는 방식이 이에 해당할 수 있습니다.


요약:

  • Service: 여러 ConnectorEngine을 포함하여 클라이언트의 요청을 처리하는 단위.
  • Engine: 요청을 처리하고 적절한 Host로 라우팅하는 구성 요소.
  • Realm: 인증 및 권한 부여를 관리하는 보안 구성 요소.
  • Connector: 클라이언트와 서버 간의 통신을 담당하는 입출력 지점.
  • Valve: 요청 처리 과정에서 추가 작업을 수행하는 필터 역할.
  • Host: 가상 호스트, 여러 웹 애플리케이션을 관리하는 단위.
  • Context: 각 웹 애플리케이션의 실행 환경을 정의하는 단위.
  • Servlet: 클라이언트 요청을 처리하는 자바 기반의 서버 측 프로그램.
  • Logger: 로그 기록을 담당하는 구성 요소.
  • TSP: 특정 Tomcat에서 확장 가능한 서비스 제공자 개념.

이러한 요소들이 협력하여 Apache Tomcat은 자바 기반의 웹 애플리케이션을 실행하고 관리하는 역할을 합니다.

'Spring Framework' 카테고리의 다른 글

프록시와 어댑터  (0) 2024.10.08
스프링 웹 MVC  (0) 2024.10.08
필터와 밸브  (0) 2024.10.08
AJP 커넥터  (1) 2024.10.08
Apache Tomcat Server  (0) 2024.10.07