내용 목차
본 장에서는 JEUS 웹 모듈에 대한 가장 상위의 컴포넌트인 JEUS 웹 컨테이너에 대한 기본 개념과 웹 모듈을 관리할 수 있는 툴과 환경설정을 위한 기본 정보를 설명한다.
JEUS 웹 모듈은 복잡하지만 JEUS 시스템 중에서 실용성 있는 컴포넌트 중의 하나이다. 이 모듈은 사용자에게 다이내믹하고 고성능이며 안정적인 Java 기반의 웹 콘텐츠를 제공하기 위해 만들어진 JSP, Servlet, 정적 HTML과 같은 수십 개의 하위 컴포넌트들로 구성되어 있다.
본 장의 나머지 부분에서는 웹 모듈의 주요 컴포넌트들에 대하여 살펴보고 어떻게 이들이 연계되어 있는지 알아본다. 이후 장에서는 운영환경에서 어떻게 이 하위 컴포넌트들을 설정하고 제어하며 모니터링하는지에 대하여 기술적으로 상세히 설명한다.
JEUS 웹 모듈 관련 컴포넌트 중 가장 기본적이면서도 최상위 레벨의 컴포넌트가 JEUS 웹 컨테이너(이하 웹 컨테이너)이다. 웹 컨테이너는 Java EE 5, Servlet 2.5, JSP 2.1을 준수하고 Servlet과 JSP뿐만 아니라 HTML과 같은 정적 내용까지도 효과적으로 수행할 수 있다.
JEUS 시스템의 설정 파일들과 툴에서는 웹 컨테이너(Web Container)를 웹 엔진(Web Engine)이라고 부르기도 한다.
다음은 JEUS 시스템 구조체 내에서 웹 컨테이너가 어떻게 연관되어 있는지 보여주고 있다.
컴포넌트들은 웹 컨테이너들의 외부에 존재하고 웹 애플리케이션과 웹 컨테이너를 운영하기 위한 환경과 기본 인프라를 제공한다.
다음은 주요 컴포넌트에 대한 설명이다.
클라이언트
JEUS 시스템에 접근하는 객체이고 웹 컨테이너의 서비스를 요청한다. 웹 컴포넌트를 접근한다면 이 클라이언트는 사용자에 의해 조작되는 HTTP 기반의 웹 브라우저가 된다.
부하 분산기(Load Balancer)
클라이언트의 HTTP 요청을 웹 서버 간에 나누어 전달하여 일정한 요청 수가 시스템에 전달될 수 있도록 한다. 예를 들어 WebtoB 서버가 부하 분산기로 사용될 수 있다. 자세한 내용은 “제4장 웹 서버 연결과 클러스터링”을 참고한다.
Web Server
클라이언트의 HTTP 요청을 받아 필요한 경우에 JEUS의 웹 컨테이너에 전달한다. 자세한 내용은 “제4장 웹 서버 연결과 클러스터링”을 참고한다.
JEUS 관리자와 노드
웹 컨테이너가 동작하는 환경을 제공한다. 성능과 안정성을 극대화하기 위해서 여러 개의 노드를 클러스터링으로 묶기도 한다. 자세한 내용은 "JEUS Server 안내서"를 참고한다.
Web Container
그림에서는 “Servlet Engine”으로 표기된 웹 서버나 HTTP 클라이언트로부터 서비스 요청을 받고 웹 애플리케이션을 실행시켜 궁극적으로는 HTML 응답 페이지를 통해 응답을 준다. 자세한 내용은 “제2장 웹 컨테이너”를 참고한다.
Session Server
분산된 환경에서 클라이언트의 Session을 관리하고 이 Session 데이터가 모든 웹 컨테이너에서 사용되도록 한다. 자세한 내용은 “제5장 Session Tracking”을 참고한다.
JNDI Naming Server
Servlet과 JSP와 같은 웹 애플리케이션이 시스템 내부의 객체나 리소스를 접근할 수 있도록 한다. EJB나 Datasource가 그 예이다. 자세한 내용은 "JEUS Server 안내서"의 JNDI 부분을 참고한다.
EJB와 JMS Engine
웹 애플리케이션에 EJB와 JMS 서비스를 제공한다. 이 엔진들은 JNDI Naming Server를 통하여 접근된다.
Security Server
웹 애플리케이션들에게 보안 정책을 적용시킨다. 자세한 내용은 "JEUS Server 안내서"의 보안 부분을 참고한다.
TX (트랜잭션) 관리자
트랜잭션을 관리한다. 자세한 내용은 "JEUS Server 안내서"의 JTS 부분을 참고한다.
데이터베이스
많은 양의 데이터를 저장하는 가장 일반적인 방법이다.
Tmax Server
TP 모니터링 서비스를 제공한다. Tmax 서버는 JEUSMain.xml에 설정된 WebT Connection Pool을 통해 접근된다. 그림에서는 보이지 않고 자세한 내용은 Tmax 제품의 "WebT User Guide"를 참고한다.
지금까지 웹 컨테이너가 JEUS 시스템 내부의 다른 컴포넌트들과 어떻게 연계되는지 살펴보았고, 지금부터는 각각의 컴포넌트들을 구성하며 웹 컨테이너 자체에 포함된 컴포넌트들에 대해 자세히 설명한다.
물리적으로 웹 컨테이너는 다음의 컴포넌트들로 구성되어 있다.
다음은 주요 컴포넌트에 대한 설명이다.
JEUS Web Container
자체는 Java EE 기반의 웹 컨테이너이다. 자세한 내용은 “제2장 웹 컨테이너”를 참고한다.
Monitoring Thread
웹 컨테이너의 다른 컴포넌트들을 감시하는 역할을 한다.
Web Server connections
외부의 웹 서버(WebtoB와 Apache)와 컨테이너가 연결되기 위한 컴포넌트이다. 웹 서버 Connection은 여러 개의 웹 서버와 웹 컨테이너들이 서로 연결되어 성능과 안정성을 향상시킨 커다란 클러스터링으로 구성되도록 한다. 자세한 내용은 “제4장 웹 서버 연결과 클러스터링”을 참고한다.
여기서 중요한 점은 웹 서버 Connectivity가 Context Group 레벨에서 설정된다는 것이다.
Session handling
분산 환경에서만 사용되고, Session Routing 기술이나 Session Server를 사용하거나, 또는 두 기술을 모두 적용시켜 활용 가능하다. 자세한 내용은 “제5장 Session Tracking”을 참고한다.
Context group
JEUS 웹 컨테이너에 포함된 것으로 여러 개의 Context들과 가상 호스트들을 관리 가능한 단위로 묶고, 이들에게 운영환경을 제공한다. 자세한 내용은 “제3장 Context Group”을 참고한다.
가상 호스트
특정한 Domain Name을 호출했을 때 해당 Context에 보다 강력한 제어 능력을 주기 위해 만들어졌다. Context는 가상 호스트 내에 명시적으로 설정될 수도 있고, Context Group 바로 아래에 묵시적인 기본 가상 호스트로도 설정될 수 있다. 자세한 내용은 “제7장 가상 호스트”를 참고한다.
Context(또는 웹 애플리케이션)
Java EE 스펙에 준하고 컨테이너 내에서 운영된다. 이들은 본래 WAR(Web ARchive) 안에 포함되며, 웹 컨테이너 내의 Context group 또는 가상 호스트에 디플로이된다. 자세한 내용은 “제6장 Web Context(웹 애플리케이션)”를 참고한다.
위에서 제시한 모든 기능들이 본 안내의 전체적인 구성이 된다.
다음은 JEUS 웹 모듈에 관련된 기본 디렉터리 구조이다.
주의 깊게 살펴봐야 할 디렉터리는 다음과 같다.
JEUS 제품을 설치할 때 선택된다. (예: c:\jeus6\)
jeusadmin, jspc를 포함하고 있는 디렉터리이다.
JEUS 시스템에 설정되어 있는 각 웹 컨테이너에 해당하는 하위 디렉터리들을 가지고 있다.
<node-name>_servlet_<engine-name>\
이 디렉터리는 웹 컨테이너의 XML 기반 설정 파일을 가지고 있다(WEBMain.xml).
파일 | 설명 |
---|---|
web.xml | 자신만의 web.xml 파일을 가지고 있지 않은 웹 애플리케이션을 위한 기본 web.xml 파일이다. |
webcommon.xml | 모든 웹 애플리케이션들에 적용되는 공통 설정 파일이다. 이 파일은 표준을 따르는 web.xml과 동일한 파일이다. Java EE XSD인 web-app_2_5.xsd에는 이 파일들에 대한 정의가 포함되어 있다. |
웹 컨테이너의 Logging 데이터를 저장하고 있다.
웹 애플리케이션을 위한 Home 디렉터리로서 다음과 같은 작업 디렉터리를 가지고 있다.
디렉터리 | 설명 |
---|---|
app_home | 엔진 로딩 후에 디플로이 대상이 되는 웹 애플리케이션이 존재하며 그 형태는 archive 타입과 exploded 타입 모두 가능하다. 콘솔 툴(jeusadmin)이나 WebAdmin을 통해서 디플로이할 경우 이 작업 디렉터리를 사용한다. |
autodeploy | 엔진을 기동(Booting)하는 경우 archive 타입의 웹 애플리케이션을 엔진이 자동으로 디플로이시킨다. |
<nodeName_containerName> | 웹 애플리케이션이 디플로이될 경우 사용하는 작업 디렉터리이다. 만일 JSP와 관련해서 생성되는 파일에 위치를 지정하고 싶을 경우 WEBMain.xml이나 jeus-web-dd.xml의 <jsp–engine> 태그를 통해서 설정 가능하다. |
JEUS 웹 모듈에 관련된 툴들은 다음과 같다.
WebAdmin
웹 컨테이너를 대상으로 작업할 수 있는 가장 좋은 툴이다. 이 툴에 대한 자세한 사용법은 "JEUS WebAdmin 안내서"를 참고한다.
명령창에서 웹 엔진을 제어할 수 있는 툴로 웹 컨테이너에 대한 기본 제어와 모니터링 기능을 제공한다. 이 툴에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.5. 서블릿 엔진 관련 명령어”와 "JEUS Server 안내서"를 참고한다.
JSP batch compiler
처음 접근하는 JSP에 대한 빠른 수행 능력을 위해 JSP를 미리 컴파일할 수 있는 기능을 제공한다.
이 툴에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.4. appcompiler”와 “JEUS Reference Book”의 “4.7. jspc”를 참고한다.
본 절에서는 웹 컨테이너를 사용하기 위해서 필요한 환경변수와 XML 파일의 설정방법에 대해서 설명한다.
JEUS 웹 모듈에서 사용하는 환경변수들은 JEUS JVM에 시스템 설정을 전달하기 위해 사용된다.
이 시스템과 JVM 사이의 변수 매핑은 JEUS_HOME\bin\ 디렉터리에 위치한 다양한 JEUS 스크립트에 존재한다. 어떤 시스템 변수들은 스크립트에 직접 반영이 되지 않은 것도 있다. 즉, 이 값들을 OS 환경변수 값을 수정함으로 또는 스크립트 외부에서 수정하는 것이 실제로 적용되지 않을 수도 있다는 것을 의미한다. 그러므로 이 값들은 항상 JEUS_HOME/config의 XML 파일에서 설정한다.
대부분의 환경변수 값들은 JEUS를 설치할 때 자동으로 설정된다. 환경변수는 수정 가능하지만 일반적으로 권장하지는 않는다. 반드시 필요한 경우에만 XML 설정 파일에서 이 환경변수들을 수정하는 것이 더 일반적이다.
다음은 JEUS 웹 모듈에 관련된 시스템 환경변수에 대한 설명이다.
이 시스템 값들을 설정하는 방법은 OS에 따라 각기 다르다. 설정 방법에 대한 내용은 해당 OS 매뉴얼을 참고한다.
다음은 JEUS 웹과 관련된 설정 파일에 대한 설명이다.
JEUSMain.xml (jeus-main-config.xsd)
위치 | JEUS_HOME\config\<node-name>\ |
목적 | JEUS 시스템에 새로운 웹 컨테이너를 추가할 때 사용한다. |
상세 정보 위치 | JEUS Server 안내서 |
WEBMain.xml (web-main-config. xsd)
위치 | JEUS_HOME\config\<node-name>\<node-name>_servlet_<engine- name>\ |
목적 | 웹 컨테이너 주요 설정 파일이다. |
상세 정보 위치 | 본 안내서 |
jeus-web-dd.xml (jeus-web-dd. xsd)
위치 | <ctxroot>\WEB-INF\ |
목적 | 웹 애플리케이션(context) Deployment Descriptor(DD)이다. |
상세 정보 위치 | 본 안내서 |
web.xml (web-app_2_5.xsd)
위치 | <ctxroot>\WEB-INF\ |
목적 | Java EE 표준 웹 모듈의 Deployment Descriptor(DD)이다. |
상세 정보 위치 | Servlet 2.5 스펙 |
web.xml (web-app_2_5.xsd)
위치 | JEUS_HOME\config\<node-name>\<node-name>_servlet_<engine-name>\ |
목적 | Web.xml을 개별적으로 가지고 있지 않은 Context의 기본 web.xml 파일이다. |
상세 정보 위치 | Servlet 2.5 스펙 |
webcommon.xml (web-app_2_5.xsd)
위치 | JEUS_HOME\config\<node-name>\<node-name>_servlet_<engine-name>\ |
목적 | 웹 컨테이너의 모든 Context에 적용되는 공통되는 설정 파일이다. |
상세 정보 위치 | Servlet 2.5 스펙 |