본문 바로가기

Programming/JAVA

컨테이너란?? 무엇일까?

 

컨테이너란 무엇인가?
일단 컨테이너는 servlet을 실행하고 관리하는 역할을 합니다.

 

 

  1. 개발자가 해야하는 역할을 컨테이너 자신이 도맡아 함으로써, 개발자가 해야하는 일을 대폭 줄여줍니다.
  2. 컨테이너는 개발자가 웹서버와 통신하기 위하여 소켓을 생성하고, 특정 포트에 리스닝하고, 스트림을 생성하는 등의 복잡한 일들을 할 필요가 없게 해줍니다.

  3. 컨테이너는 servlet의 생성부터 소멸까지의 일련의 과정을 관리하는 역할을 합니다.
  4. 컨테이너는 요청이 들어올 때마다 새로운 자바 스레드를 하나 만듭니다. 이 말은 곧 스레드를 생성하고 운영하는 부분을 컨테이너가 담당해주니 개발자가 이 부분에 대한 부담을 줄일 수 있게 해준다는 거죠 ^^)/

 

그럼 컨테이너란 무엇이란 말인가??;;; 앞에서는 어쩌다 보니 역할에 대한 내용이 주(周)를 이루게 되었는데요~

육로 또는 수로를 통해 운반 및 수출입시 일반적으로 컨테이너를 이용합니다.

그 의미와 동일합니다.

무언가 특정기능을 하는 제품 및 자제들을 담아주는 역할을 하는 것.

이것이 바로 컨테이너라 볼 수 있습니다.  흠... 말이 제가 쓰고도 좀 어렵네요;;

 

톰캣을 예로 들면 아파치와 같은 웹서버가 사용자로부터 서블릿에 대한 요청을 받으면 이것을 바로 호출하는 것이 아니라 컨테이너에게 이 요청을 넘겨주고 이 컨테이너는  request와 response 객체를 생성하고 해당하는 서블릿의 스레드를 생성하여  앞의 두 객체를 인자로 넘깁니다.

서블릿의 스레드를 생성한 후 이 스레드의 service() 메소드를 호출하고 처음에 사용자로부터 요청받은 방식이 get인지 post인지에 따라 doGet()과 doPost() 메소드 중에서 선택 생성합니다. 그럼 만약 doPost가 생성되었다고 가정해 보았을 때, 이 doPost()메소드는 동적 페이지를 생성하고, 이것을 처음 받은 reponse 객체에 실어서 컨테이너에게 보냅니다.

컨테이너는 이 객체를 HTTPResponse로 변환하여 클라이언트에게 보냅니다. 그런 다음 처음에 생성한 객체 Request와 Response를 소멸시킵니다.

 

예상하셨는지 모르겠지만 빨간색으로 칠해져 있는 부분이 바로 컨테이너가 하고 있는 일입니다.

위의 사례를 간략히 설명해 보자면, 사용자로부터 동적페이지에 대한 요청을 받았을 때, 이것이 처리되는 일련의 과정을 담은 내용입니다.

 

흠 조금 설명하는게 어렵네요;;


 

이 글은 스프링노트에서 작성되었습니다.