프로그램이 실행되면서 운영체제에 필요한 주소공간, 메모리 등의 시스템 자원을 할당받고, 여러 작업을 처리하는 과정
하나의 프로세스 내에서 작업을 분산해서 효율적으로 처리하는 실행의 단위
결국 아파치서버란 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버를 의미한다.
이는 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장한 것 같다.
톰캣 WAS(web application server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너로도 불림)
톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈소스로 개발이 되고 있다.
JAVA EE 기반으로 만들어졌으며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
아파치서버와는 다르게 DB연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을
사용할 수 있다.
컨테이너(container)
동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
서블릿(servlet)
클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스.
java.servlet.package에 정의된 인터페이스로서 서블릿의 라이프 사이클을 위한 세 가지 필수적인 메소드들을 정의한다.
서블릿 컨테이너(servlet container)
서블릿들을 모아 관리
새로운 요청이 들어올 때마다 새로운 스레드를 생성
작업이 끝난 서블릿 스레드 자동 제거
WAS(wab application server)
DB 처리, 로직 처리를 요구하는 동적타입을 제공하는 소프트웨어 프레임워크를 의미한다.
기본적으로 사용되는 기능 3가지는 아래와 같다.
기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.
아파치톰캣은 WebServer + Web Container(Servlet Container)
Web Container 가 추가된 것이 아파치 톰캣이다.
동적인 결과가 필요할 때 사용된다. (jsp 등)
웹 컨테이너의 역할
- 웹서버를 통해 필요한 페이지를 받는다.
- Container 가 web.xml(배포서술자=DD)를 참조하여 스레드 생성하여 요청 및 응답 객체를 생성하여 스레드에게
전달 (HttpServletrequest, HttpServletResponse)
- 스레드 및 응답객체 생성완료 시, Container 는 사용자의 요청에 맞는 Servlet을 호출한다.
- 스레드가 요청에 따라 doGet(), doPost()를 호출한다.
- 요청에 의해 생성된, doGet(), doPost() 메소드는 생성된 동적 페이지를 Response에 실어 Container에 전달.
- Container는 Response 객체를 HttpResponse 형태로 전환하여 웹서버에게 전달하고 생성된 스레드를 종료,
요청 및 응답 객체를 소멸
*아파치는 순수 Apache 웹서버만 존재하고,
우리가 말하는 톰캣은 아파치톰캣인 것이다. (Tomcat = Apache Tomcat)
톰캣자체에 아파치 역할을 하는 웹서버가 존재하는것이다.