Apache Tomcat 서버는 자바 서블릿과 JSP 기반의 웹 애플리케이션을 실행하는 서블릿 컨테이너입니다. Tomcat의 구성 요소는 각각의 기능을 담당하며, 이들은 서로 협력하여 웹 애플리케이션을 실행하고 관리합니다. 각 구성 요소는 Tomcat 서버의 설정 파일(server.xml
)에서 설정할 수 있으며, 이를 통해 Tomcat의 동작을 제어할 수 있습니다.
1. Service
<Service>
는 Tomcat 서버 내에서 요청을 처리하는 기능의 집합입니다. Service는 Engine과 Connector를 포함하며, 하나의 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의 요청 처리 과정에서 추가적인 작업을 수행하는 필터와 같은 역할을 합니다. Valve는 Engine, Host, 또는 Context에서 요청이나 응답을 가로채고, 그 위에 보안 검사, 로깅, 트래픽 제어 등의 작업을 추가할 수 있습니다. Valve는 Filter와 유사하지만, 더 낮은 수준에서 동작합니다.
예시:
<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에서는 주로 AccessLogValve나 Commons 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: 여러 Connector와 Engine을 포함하여 클라이언트의 요청을 처리하는 단위.
- 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 |