웹 컨테이너
1. 개요
웹 컨테이너는 자바 서블릿 명세 또는 자카르타 서블릿 사양을 구현하는 애플리케이션을 지칭한다. 오픈 소스 및 상용 웹 컨테이너로 분류되며, 아파치 톰캣, 아파치 제로니모, 제티 등이 오픈 소스에 해당하고, 오라클 iPlanet 웹 서버, JBoss 엔터프라이즈 애플리케이션 플랫폼, WebLogic Application Server 등이 상용 웹 컨테이너에 속한다. 일부 웹 컨테이너는 EJB 컨테이너 기능도 함께 제공한다.
| 종류 | 자바 서블릿 |
|---|---|
| 역할 | 웹 서버의 확장 기능 제공 |
| 기능 | 서블릿 생명 주기 관리, URL과 서블릿 매핑, 보안 관리 |
| 구현 | 웹 서버 내부에 포함되거나 독립적인 컴포넌트로 존재 |
| 예시 | 톰캣, 제티, 웹스피어 |
| 요청 처리 | HTTP 요청을 분석하고 해당 서블릿에 전달한다. |
|---|---|
| 서블릿 관리 | 서블릿의 생성, 실행, 소멸을 관리한다. |
| 자원 관리 | 서블릿이 필요로 하는 자원(데이터베이스 연결, 파일 등)을 제공한다. |
| 세션 관리 | 사용자 세션을 추적하고 관리한다. |
| 보안 | 사용자 인증 및 권한 부여를 수행한다. |
| 1단계 | 클라이언트가 웹 서버에 HTTP 요청을 보낸다. |
|---|---|
| 2단계 | 웹 서버는 요청을 웹 컨테이너에 전달한다. |
| 3단계 | 웹 컨테이너는 요청에 해당하는 서블릿을 찾아서 실행한다. |
| 4단계 | 서블릿은 요청을 처리하고 응답을 생성한다. |
| 5단계 | 웹 컨테이너는 서블릿의 응답을 클라이언트에게 다시 전달한다. |
-
웹 개발 -
Ajax
Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다. -
웹 개발 -
WebXR
WebXR은 웹 브라우저에서 가상 현실 및 증강 현실 콘텐츠를 구현하기 위한 API로, 다양한 장치 및 플랫폼에서 몰입형 웹 경험을 제공하며, 구글, 메타, 모질라 등 여러 기업과 단체가 개발에 참여하여 지속적인 업데이트를 통해 기능 향상을 목표로 한다. -
컴퓨터 네트워킹 -
유니캐스트
유니캐스트는 데이터를 단일 목적지로 전송하는 방식으로, 브로드캐스트 및 멀티캐스트와 대비되며, 개인적 또는 고유한 리소스가 필요한 네트워크 프로세스에 사용되지만, 대량 데이터 전송 시 비용이 증가하는 단점이 있다. -
컴퓨터 네트워킹 -
노드 (네트워크)
노드(네트워크)는 데이터 통신에서 데이터를 주고받는 장치를 의미하며, 물리적 네트워크 노드, 인터넷 노드, 통신 네트워크 노드, 분산 시스템 노드, 네트워크 가상화 노드 등으로 분류된다. -
자바 플랫폼 -
블루레이
블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다. -
자바 플랫폼 -
자바 플랫폼, 마이크로 에디션
자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
2. 서블릿 컨테이너 목록
선 마이크로시스템즈의 자바 서블릿 명세나 이클립스 재단(Eclipse Foundation)의 자카르타 서블릿 사양을 구현한 애플리케이션을 판매 여부에 따라 분류한다. 일부는 Enterprise JavaBeans 작동도 가능한 EJB 컨테이너 기능을 갖추고 있다.
2.1. 오픈 소스 웹 컨테이너
다음은 오픈 소스 라이선스로 배포되는 서블릿 컨테이너 목록이다.
* 루트리스 테크놀로지스사의 엔하이드라
* 오라클의 글래스피시 (웹 컨테이너를 포함하는 애플리케이션 서버)
* 레드햇 JBoss 부서의 와일드플라이 (이전 명칭: JBoss 애플리케이션 서버). 자바 EE를 완전히 구현했다.
* Jaminid는 서블릿의 추상화된 개념을 포함하고 있다.
* Winstone은 v2.5 (현재 0.9) 명세를 지원하고, 최소한의 설정에 초점을 맞추고 원하는 기능만 남도록 추려내는 기능을 가지고 있다.
* Tiny Java Web Server (TJWS) 2.5는 작고 모듈화 가능하도록 설계되어있다.
2.1.1. 아파치 소프트웨어 재단
아파치 소프트웨어 재단에서 개발 및 배포하는 서블릿 컨테이너는 다음과 같다.
* 아파치 톰캣: 아파치 소프트웨어 라이선스 하에 사용할 수 있는 오픈 소스 웹 컨테이너이다. 6 이상 버전은 일반적인 애플리케이션 컨테이너로도 작동할 수 있다.
* 아파치 제로니모: 자바 EE 6를 완전히 구현한 웹 컨테이너이다.
2.1.2. 이클립스 재단
이클립스 재단의 제티는 SPDY와 WebSocket 프로토콜을 지원한다. 버고는 이클립스 재단에서 제공하며, 내장된 톰캣 및 제티를 사용하여 구현된 모듈형 OSGi 기반 웹 컨테이너이다. 버고는 이클립스 공용 라이선스 하에 사용할 수 있다.
2.1.3. 기타 오픈 소스 웹 컨테이너
* 아파치 톰캣(예전 자카르타 톰캣)은 아파치 소프트웨어 라이선스 하에 사용할 수 있는 오픈 소스 웹 컨테이너이다. 6 이상 버전은 일반적인 애플리케이션 컨테이너로 작동할 수 있다(이전 버전은 웹 컨테이너만 지원).
* 아파치 제로니모는 아파치 소프트웨어 재단에서 자바 EE 6를 완전히 구현한 웹 컨테이너이다.
* Lutris Technologies사의 Enhydra.
* 오라클의 글래스피시(웹 컨테이너를 포함하는 애플리케이션 서버)
* 제이보스(현재 WildFly)는 레드햇의 제이보스에서 자바 EE를 완전히 구현한 웹 컨테이너이다.
* 이클립스 재단의 제티. SPDY와 웹소켓 프로토콜을 지원한다.
* Jaminid는 서블릿의 추상화된 개념을 포함하고 있다.
* Winstone은 v2.5 (현재 0.9) 명세를 지원하고, 최소한의 설정에 초점을 맞추고 원하는 기능만 남도록 추려내는 기능을 가지고 있다.
* Tiny Java Web Server(TJWS) 2.5는 작고 모듈화 가능하도록 설계되어있다.
* 이클립스 재단의 Virgo는 모듈화된 OSGi 기반의 웹 컨테이너로 내장 톰캣과 제티를 구현하고 있다. Virgo는 이클립스 공용 라이선스 하에 사용 가능하다.
* 엔하이드라
* 와일드플라이(이전 명칭: JBoss 애플리케이션 서버)는 레드햇의 JBoss 부서에서 제공하는 완전한 자바 EE 구현체이다.
2.2. 상용 웹 컨테이너
다음은 상용 라이선스로 판매되는 서블릿 컨테이너 목록이다.
* iPlanet 웹 서버 (오라클)
* 레드햇의 JBoss 엔터프라이즈 애플리케이션 플랫폼은 서브스크립션 커머스와 오픈소스로 된 자바 EE 기반의 애플리케이션 서버다.
* 어도비 시스템즈의 JRun (과거 Allaire Corporation에서 개발).
* WebLogic 애플리케이션 서버 (오라클, 과거 BEA Systems에서 개발).
* IronFlaer의 Orion 애플리케이션 서버.
* Caucho Technology의 Resin Pro.
* New Atlanta Communications의 ServletExec.
* IBM WebSphere 애플리케이션 서버
* SAP NetWeaver
* SpringSrouce Inc. 의 tc Server.
일부 제품은 비즈니스 로직을 처리하는 Enterprise JavaBeans의 작동도 가능한 EJB 컨테이너로서의 기능도 함께 갖추고 있다.