[CGI, 서블릿 컨테이너(WAS)]
(1) 웹어플리케이션 서버(WAS)
- 웹서버 : 요청에 대한 정적인 리소스를 응답하는 목적으로 만들어진 서버(프로그램)
- 웹어플리케이션 서버 : 동적인 처리를 하고 데이터를 웹서버로 리턴하는 목적으로 만든 서버
- 동적인 처리가 필요할 떄 웹서버가 웹어플리케이션을 실행시켜 처리 후 결과를 리턴받아 정적인 문서에 붙여서 응답함
=> 그런데! 웹서버와 웹어플리케이션이 서로 다른 언어, 체계로 만들어졌기때문에 데이터 주고 받기가 원활하지않음
=> 그래서 나온게 CGI : 아래로 갑시다!
(2) CGI(Common GateWay Interface)와 CGI 프로그램 그리고 서블릿컨테이너(WAS)
- 웹서버와 웹어플리케이션서버 데이터를 주고받는 규칙 : 구현된 언어와 체계가 각각 다르기때문에 이를 맞춰줄 하나의 규약
=> 동적인 처리를 목적으로 만든 어플리케이션 실행, 실행 결과값을 다시 웹서버로 전달해주는 역할할 때 규약이 필요함
- CGI를 따라서 작성한 프로그램을 CGI 프로그램이라 함
- CGI 프로그램 실행 유형에는 2가지 방식이 있음
(1) 인터프리터
- 소스코드 형태 : .php, .pl, .js, .asp, .py
- 그래서 스크립트 엔진이 필요함 : 웹서버가 스크립트 엔진을 실행하고 스크립트 엔진이 스크립트를 해석 -> 데이터 리턴
(2) 컴파일
- 기계어가 최종본, 웹서버가 바로 실행시킬 수 있음
(3) 자바와 CGI 프로그램
- 자바의 웹어플리케이션은 .class(서블릿)으로 되어있음 : .class는 바이트코드(중간 단계, jvm에 의해 기계어로 번역됨)
- 당연히 웹서버는 웹어플리케이션을 실행시킬 수 없음 : .class 파일이 jvm에 의해 번역되고 실행되어야하기때문에
- 그러면 웹서버가 jvm을? : 당연히 안됨, jvm은 운영체제에 종속적
- 그렇다면? jvm이 실행되고 그 위에서 자바 프로그램 관리 서버(CGI 규칙 지킨 프로그램)를 만들고 실행하면 되겠다!
- 아래 그림처럼 됨
1) 클라이언트로부터 웹서버가 요청을 받으면 자바 프로그램 관리서버(WAS)를 실행
2) 자바 프로그램 관리 서버는 자바 프로그램(.class, 서블릿, 웹어플리케이션)을 호출(실행)
3) 리턴받은 값을 자바 프로그램 관리 서버가 결과값을 웹서버로 : 데이터를 전달해주는 역할(서버)
- 서블릿 컨테이너
1) 자바 프로그램 관리 서버의 이름
2) 자바 프로그램을 서블릿이라 함 : .class, 웹어플리케이션
3) 요청이 오면 호출(생성, 실행)할 뿐만 아니라 소멸까지 관리 : 라이프사이클 관리 - 컨테이너라 함
=> 스크립트의 경우 OOO엔진이라 함
4) 여러 요청이 올 때 : 하나의 프로세스에서 멀티 쓰레드 처리 등 어플리케이션 관리 기능까지
5) 대표적으로 톰캣, 제우스, 웹로직 등이 있음
6) WAS라고 함 : 웹서버로부터 요청을 전달받고 웹어플리케이션(서블릿)을 실행시키고 얻은 결과값을 웹서버로 전달해주는 역할
'java' 카테고리의 다른 글
[Java] 클래스 - 객체지향, static, instance, 접근제어자, 싱글턴 등 (0) | 2017.09.19 |
---|---|
[Java] 개념은 제대로 알고가자 - 객체지향 무엇인가 (0) | 2017.09.16 |
[Java] 서버 프로그래밍 - 특강으로 맛보기, 배운것과 앞으로 배워야할 것 #2 (0) | 2017.09.14 |
[Java] 서버 프로그래밍 - 특강으로 맛보기, 배운것과 앞으로 배워야할 것 #1 (0) | 2017.09.14 |
[Java] 레퍼런스 타입, jvm 메모리 운영, 프로그램-프로세스-쓰레드 등 (0) | 2017.09.07 |
댓글