java

😎톰캣 이란?

윤-찬미 2021. 12. 15. 22:25

톰캣은 흔히들 와스 WAS(Web application Server) 라고 한다.

와스는 웹 서버와 서블릿 컨테이너의 결합으로 다양한 역할 수행하는 서버다.

위키백과에 따르면 아래와 같이 설명하고 있다.

아파치 톰캣은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버이다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다.

 

내용을 조금 더 풀어서 설명하자면,

우리가 페이지에 접속했을 때 렌더링용 html(내용이 바뀌지 않는), css, image file 과 같은 정적 페이지는

web server를 통해서 응답을 받고, (이때 웹서버는 아파치를 주로 사용한다)

그리고 동적인 페이지 (예를들어 디비로 부터 값을 받아서 변경해줘야하는 페이지 등)은

web server 가 받으면 was server로 넘겨준다.

 

was server 내부는 어떻게 되어 있을까?

위에서 설명했다싶이 was는 내부에 컨테이너 라는 녀석이 있는데,

이 컨테이너는 동적인 처리가 필요한 작업을 받았을 때

httpServletRequest, httpServletResponse 라는 빈 객체를 만들고 새 쓰레드에 할당 시킨다.

해당 작업에 대한 응답객체와 요청객체를 만들어 둔다.

동시에 Web.xml이라는 파일에 접근해서 이 요청을 누가 처리 할지 알아오게 되는데,

 

이를 처리 하는 친구가 서블릿 이다.

그럼 이 서블릿에게 doGet()과 doPost를 실행 시킨다.

즉 httpServletRequest에서 전달 받은 데이터 들로 새로운 동적 페이지를 만든다.

이렇게 결과 페이지가 만들어지면, httpServletResponse 에 담아서 다시 web 한테 보내 준다.

이때 web이 알아들을 수 있게 httpResponse 형태로 가공해서 web 한테 주면 작업이 완료 된다.

(참고로 던져 주면서 기존 만들어 둔 스레드는 제거 한다)