본문 바로가기

Server

Java EE와 Servlet/JSP의 관계와 WAS 개념 정리

Java EE와 Servelet/JSP

Java EE Java Enterprise Edition을 의미하며 Servlet, JSP(Java Server Page)는 Java EE에 포함된 하위 기술들이다. 이 외에도 Java EE에는 기업용 어플리케이션과 클라우드 어플리케이션 개발에 필요한 여러가지 복합적인 기술들이 정의되고 모아져있다. www.oracle.com에서 Java EE 버전 별 기술 사양 버전을 확인할 수 있다.

 

Java EE 7 Technologies

위 그림은 Oracle에서 확인할 수 있는 Java EE 7의 기술 사양 버전이다. Java EE 7의 Servlet 버전은 3.1, JSP 버전은 2.3이다.

 

Java EE가 업그레이드 될 때 마다 하위 기술들도 함께 업그레이드되며 버전이 올라간다.

 

Java EE 기술 중에서 서블릿, JSP는 웹을 기반으로 한 클라이언트/서버 기술을 정의한다. 자바로 웹 어플리케이션을 개발한다는 것은 서블릿, JSP 기술을 사용하여 어플리케이션을 개발하는 것을 의미한다.

 

참고 - Java EE 버전 별 Technologies 링크

Java EE 8 - https://www.oracle.com/java/technologies/java-ee-glance.html

Java EE 7 - https://www.oracle.com/technetwork/java/javaee/tech/index-jsp-142185.html

 

Java EE 6 - https://www.oracle.com/technetwork/java/javaee/tech/javaee6technologies-1955512.html

 

Java EE 5 - https://www.oracle.com/technetwork/java/javaee/tech/javaee5-jsp-135162.html

 

Servlet

서블릿은 자바 기반의 CGI 프로그램이며 CGI 규칙에 따라 웹 서버와 데이터를 주고받는다.

먼저 웹 어플리케이션의 실행 과정을 살펴보자. (1) 웹 브라우저가 웹 서버에게 요청을 전송한다. (2) 웹 서버는 클라이언트가 요청한 프로그램을 찾아서 실행한다. (3) 해당 프로그램은 작업을 수행한 후 그 결과를 웹 서버에게 돌려준다. (4) 웹 서버는 그 결과를 HTTP 형식에 맞춰 웹 브라우저에게 보낸다.

 

웹 어플리케이션의 실행 과정

이때 웹 서버와 프로그램 사이의 데이터를 주고받는 규칙을 CGI(Common Gateway Interface)라고 한다. 웹 서버에 의해 실행되며 CGI 규칙에 따라 웹 서버와 데이터를 주고받도록 작성된 프로그램을 CGI 프로그램이라 한다. 서블릿은 자바 기반의 CGI 프로그램이다.

 

자바 서블릿이 다른 CGI 프로그램과 다른 점은 웹 서버와 직접 데이터를 주고받지 않으며 서블릿 컨테이너에 의해 관리된다는 것이다.

 

서블릿 컨테이너

서블릿의 생성, 실행, 소멸을 관리하는 프로그램을 '서블릿 컨테이너(Servlet Container)라 한다. 서블릿 컨테이너가 서블릿 대신 웹 서버와 데이터를 주고받는다.

 

 

WAS와 서블릿 컨테이너

- WAS란 웹 기반 서버 어플리케이션의 생성, 실행, 소멸을 관리하는 프로그램이다.
- Java EE 기술 사양을 준수해서 만든 서버이다.
- Java EE 구현체라고도 한다.

서블릿 컨테이너가 서블릿의 생성, 실행, 소멸을 관리하듯이, 클라이언트/서버 시스템 구조에서 서버 쪽 어플리케이션의 생성, 실행, 소멸을 관리하는 프로그램을 '어플리케이션 서버(Application Server)'라고 한다. 그 중 서블릿 컨테이너와 같이 웹 기술을 기반으로 동작되는 어플리케이션 서버 'WAS(Web Application Server)'라 한다.

 

특히 Java에서는 WAS는 Java EE 기술 사양을 준수해서 만든 서버를 가리킨다. 다른 말로 'Java EE 구현체(Implementation)'라고도 한다.

 

상용 WAS로는 티맥스소프트의 제우스(JEUS), 오라클의 웹로직(WebLogic), IBM의 웹스피어(WebSphere), 레드햇의 JBoss Enterprise 등이 있다. 무료 또는 오픈소스로는 레드햇의 JBoss AS, 오라클의 GlassFish, 아파치 재단의 Geronimo 등이 있다.

 

Java EE 기술 중 서블릿, JSP 등 웹 관련 부분만 구현한 서버가 '서블릿 컨테이너'이다. 아파치 재단의 Tomcat, 오픈 프로젝트 Jetty 등이 있다.

 

Java EE Servlet/JSP Tomcat JBoss WebLogic JEUS
Java EE 8 4.0 / 2.3 9.0.x      
Java EE 6 3.0 / 2.2 7.0.x 7.x(all)
6.x(almost)
12.x 7.x
Java EE 5 2.5 / 2.1 6.0.x 5.x 10.x 6.x

표 - Java EE, 구현체, Servlet/JSP 버전

 

서블릿, JSP 프로그래밍을 할때는 사용하는 WAS 혹은 서블릿 컨테이너가 어떤 버전의 Java EE 구현체인지 확인하고 그에 맞는 서블릿, JSP 버전의 API를 사용해야 한다. 예를 들어 Tomcat 7.0은 Java EE 6을 구현했으므로 Servlet은 3.0, JSP는 2.2 버전의 API를 사용해서 개발한다.

 

출처 : https://atoz-develop.tistory.com/entry/Java-EE%EC%99%80-Servlet-JSP%EC%9D%98-%EA%B4%80%EA%B3%84%EC%99%80-WAS-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

'Server' 카테고리의 다른 글

Tomcat ThreadPool  (0) 2023.08.18
Tomcat  (0) 2023.05.04
HTTP 상태코드  (0) 2022.02.05
분산 시스템  (0) 2022.01.25
Was란 무엇인가  (0) 2022.01.25