WAS와 웹 서버
[웹 서버]
- 클라이언트가 서버에 페이지를 요청하면 이 요청을 받아 정적 컨텐츠(html, css, png)를 제공하는 서버
- 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다.
- 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할
[WAS]
- 동적 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버(DB조회, 로직처리가 요구되는 컨텐츠)
- JSP, Servlet구동 환경 제공
- 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고 부른다. (JSP, Servlet을 실행시킬 수 있는 소프트웨어=컨테이너)
동작 프로세스
- 웹 서버로부터 요청이 오면 컨테이너가 받아서 처리한다.
- 컨테이너는 web.xml을 참조하여 해당 서블릿에 대한 쓰레드를 생성하고 httpServletRequest와 httpServletResponse객체를 생성하여 전달한다.
- 컨테이너는 서블릿을 호출한다.
- 호출된 서블릿의 작업을 담당하게 된 쓰레드는 doPost()또는 doGet()을 호출한다.
- 호출된 doPost(), doGet()는 생성된 동적 페이지를 Response객체에 담아 컨테이너에 전달한다.
- 컨테이너는 전달받은 Response객체를 HttpResponse형태로 바꿔 웹 서버에 전달하고 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse객체를 소멸시킨다.
[WAS와 웹 서버 차이]
- WAS는 정적, 동적 처리가 가능하지만 정적처리를 WAS가 하게 될 경우 부하가 많이 걸려 좋지 않다.
- 톰캣(WAS)에는 아파치(웹서버)의 기능(웹서비스데몬, Httpd)를 포함하고 있다.