- Web Server와 Web Application Server(WAS)의 차이점을 소개한다.
Web Server
- 클라이언트의 요청을 받은 정적인 데이터(웹 페이지, 이미지)를 HTTP 프로토콜을 통해 전송한다.
- 클라이언트의 요청 중 자체적으로 처리할 수 없는 동적인 데이터 처리에 대해서는 WAS에 요청한다.
- Web Server에서는 정적인 데이터를 처리하고 WAS에서는 동적인 데이터를 처리하는 방식으로 양분하여 처리하는 방식을 사용한다.
- 이를 통하여, 각 서버에서 처리하는 부하를 줄여줄 수 있다. ex) Apach, IIS, Nginx
WAS(Web Application Server)
- 클라이언트 요청을 받은 동적인 데이터(Web Server가 처리할 수 없는 데이터)를 처리하여 Web Server에 정적인 정보를 제공한다.
- 일반적으로 WAS는 Web Server 기능을 내제하고 있기에, Web Server 없이 서비스가 가능하다. ex) Web Logic, Jeus, Tomcat, JBoss
Web Containner
- Servlet, JSP를 실행할 수 있는 소프트웨어다.
- Web Server에서 동적 데이터인 처리 요청이 들어오면 JSP 파일은 Servlet으로 변환한다.
- 이후 Servlet을 컴파일하여 실행한 결과를 Web Server에 전달한다.
WAS의 데이터 처리 방식
- Web Server로 부터 동적 데이터 처리 요청이 들어오면 Web Container가 이를 수신한다.
- Web Container는 web.xml를 참조하여 해당 Servlet를 처리하기 위한 스레드를 생성하고 요청(httpServletRequest) 및 응답(httpServeletResponse) 객체를 생성하여 스레드에 전달한다.
- Web Container는 Servlet을 호출한다.
- 호출된 Servlet의 작업을 담당하는 스레드(미리 생성되어 있는 상태)는 HTTP 프로토콜 타입에 따라 doPost() 또는 doGet() 메소드를 호출한다.
- 호출된 doPost() 또는 doGet() 메소드는 동적 페이지를 생성한 다음 Response객체에 담아서 web container에 전달한다.
- Web Container는 전달받은 Response객체를 HTTPResponse 형태로 전환하여 Web Server에 전달하고 생성된 스레드와 요청 및 응답 객체를 제거한다.
Comments powered by Disqus.