본문 바로가기

JAVA관련 상식

CGI와 서블릿 그리고 톰캣

 

 

1. CGI (공용 게이트웨이 인터페이스, Common Gateway Interface)


- 별도로 제작된 웹 서버와 프로그램간의 교환방식을 의미한다.
- CGI방식은 어떠한 프로그래밍언어로도 구현이 가능하다.
- 별도로 만든 프로그램에 HTML의 Get, Post 방법으로 클라이언트의 데이터를 환경변수로 전달하고, 프로그램의 표준 출력 결과를 클라이언트에게 전송한다. 즉, 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면을 만드는 방법이다.
- 동적인 HTML, 데이터베이스 질의 처리 등에 사용된다. 
- 서버에서 프로세스 단위로 실행되는데, 사용자의 요청이 많을때 서버에 부하가 크게 발생하게 되었고, 프로세스 보다 더 작은 단위로 실행하는 것이 필요했다. 그리고 웹 서버의 프로세스로서 인터프리터를 상주시키고, 스레드 단위로 실행하여 부하를 줄임으로써 성능을 개선한 자바 서블릿이 등장했다.

 

 

2. 서블릿 (Servlet)

- 서블릿이란 톰캣이 이해할 수 있는 순수 자바 코드로만 이루어진 웹 서버용 클래스이다.   
- 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 서블릿은 자바로 구현 된 CGI를 의미한다.
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트이며, HTML을 사용하여 요청에 응답하며고Java Thread를 이용하여 동작한다.
- HTML 변경 시 서블릿을 재컴파일해야 하는 단점이 있다.

- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다. UDP에 비해 속도가 느리다.

 

 

3. 톰캣 (Tomcat)

- 아파치 톰캣은 아파치 소프트웨어 재단에서 개발한 오픈소스 소프트웨어로서, 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.
- 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다.
- 톰캣은 관리툴을 통해 설정을 변경할수 있고, XML 파일을 편집하여 설정할 수도 있다. 그리고 톰캣은 HTTP 서버 자체를 내장하기도 한다.
- 자바서버 페이지나 자바 서블릿을 실행하기 위한 서블릿 컨테이너를 제공하며, 상용 웹 애플리케이션 서버에서도 서블릿 컨테이너로 사용하는 경우가 많다.
- 일반적으로 내장된 웹 서버로만 웹 시스템을 구성하지만, 많은 사용자가 사용하는 대규모 시스템 구축을 위해 웹 서버인 아파치 HTTP서버와 연동모듈을 사용하여 연동하여 사용한다.
  (연동모듈로는 버전 1.3, 2.0은 mpd_jk를 이용, 버전 2.2 이후는 mod_proxy_ajp 모듈을 사용한다.)

'JAVA관련 상식' 카테고리의 다른 글

JVM 과 바이트 코드  (0) 2020.05.13
J2SE, J2EE, JDK, JRE 차이  (0) 2020.05.13