Etc./APM

WAS란?

gyu.ree 2023. 1. 5. 22:47

웹 서버 (WEB) 이란? 

작성된 html 페이지 등을 네트워크망에 종속되지 않고, 웹 서비스를 할 수 있도록 하는 어플리케이션

1. 소프트웨어의 웹 서버: 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램.

2. 하드웨어의 웹 서버: 위 기능을 제공하는 컴푸터 프로그램을 실행하는 컴퓨터 

ex. Apache, Nginx

 

사용 목적: 

정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 파일과 같은 리소스를 제공하는 서버에 좋다. 

웹 서버 (WAS, Web Applicatino Server) 란?

웹 서버 + 웹 컨테이너

인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어 (소프트웨어 엔진)이다. 웹 애플리케이션 서버는 동적 서버 컨텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행된다.

웹 서버 + 웹 컨테이너라고 쉽게 생각하면 된다. 컴포넌트를 올려놓고 사용하게 되는 서버인데, 컴포넌트란 웹 컨테이너랑 jsp와 servlet을 실행시킬 수 있는 소프트웨어이다. 

 

* 웹 컨테이너 ?

jSP와 servlet을 실행시킬 수 있는 소프트웨어이다.
웹 서버에서 jsp를 요청하면 톰캣에서는 jsp 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹 서버에게 전달한다. (즉 jsp와 servlet 구동 환경을 제공한다.)

+ 서블릿은 클라이언트가 어떤 요청을 하면 그에 대한 결과를 전송해줘야하는데, 이런 역할을 하는 자바프로그램이다. 

 

ex. Tomcat, JBoss

 

사용 목적:

동적인 데이터를 처리하는 서버이다. DB와 연결되어 데이터를 주고 받거나, 프로그램으로 데이터 조작이 필요한 경우에 WAS를 활용한다. 

우리가 만드는 웹 페이지는 정적, 동적 컨텐츠가 모두 있기 때문에 웹 서버와 WAS 모두 사용한다. 

 

작동 원리:

1. 웹 서버로부터 요청이 오면 컨테이너가 받아서 처리한다.

2. 컨테이너는 web.xml 을 참조하여 서블릿에 대한 쓰레드를 생성하고, httpServletRequest와 httpServletResponse 객체를 생성하여 전달한다.

3. 컨테이너는 서블릿을 호출한다. 

4. 호출된 서블릿의 작업을 담당하게 된 쓰레드는 doPost(), doGet()을 호출한다. 

5. 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response 객체이 담아 컨테이너에 전달한다.

6. 컨테이너는 전달받은 Response 객체를 HTTPResponse 형태로 바꿔 웹 서버에 전달하고, 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킨다.