제3장 Context Group

내용 목차

3.1. 개요
3.2. Context Group 주요 기능과 구조
3.2.1. 주요 기능
3.2.2. 디렉터리 구조
3.3. Context Group 설정
3.3.1. 기본 설정
3.3.2. 인코딩 설정
3.3.3. JSP 엔진 설정
3.3.4. Logging 설정
3.3.5. Session 설정
3.3.6. Response Header 설정
3.4. Context Group 모니터링
3.5. Context Group 튜닝

본 장에서는 Context Group에 대해 상세하게 설명한다.

3.1. 개요

JEUS 내부에서 웹 애플리케이션(또는 Context)은 Context Group으로 그룹핑되어 있다. 또한, 여러 개의 Context Group들도 JEUS 웹 컨테이너에 존재할 수 있다. 관련 내용은 “제2장 웹 컨테이너”를 참고한다.

Context Group은 웹 애플리케이션에 많은 중요한 서비스들을 제공한다. 이러한 서비스들의 예는 웹 서버 연결, JSP 컴파일, Logging, Active Management, Response Header 설정 등이 있다. 즉, Context Group의 설정과 서비스들은 종속되어 있는 모든 웹 애플리케이션에 적용된다. JEUS 시스템에 웹 애플리케이션을 성공적으로 디플로이하기 위해서는 이 개념을 반드시 이해해야 한다.

3.2. Context Group 주요 기능과 구조

개념적으로 Context Group은 “웹 컨테이너 내의 웹 컨테이너”로 생각할 수 있다. 그뿐만 아니라 Context Group은 여러 개의 웹 애플리케이션를 호스팅할 수 있는 Virtual Server라고 생각할 수 있다.

각 Context Group에는 그에 등록된 웹 애플리케이션들이 사용할 별도의 설정과 하위 컴포넌트들이 존재한다. 많은 서비스들과 설정들이 최상위 웹 컨테이너로부터 상속된다는 사실도 매우 중요하다.

앞에서 설명했듯이 이러한 서비스들에는 Session 처리 설정(Session 처리 설정이 Context Group에 설정되어 있으면 웹 컨테이너의 설정은 무시된다)이 있다.

다음은 “제1장 JEUS 웹”에서 제시한 웹 컨테이너 구조이다. 본 장에서 주로 설명할 부분은 타원으로 표시되어 있다.

[그림 3.1] 웹 컨테이너에 연관된 Context Group

웹 컨테이너에 연관된 Context Group


다음 그림은 Context Group의 상세 확대한 모습으로 본 장에서 주로 설명할 부분은 타원으로 표시되어 있다.

[그림 3.2] Context Group의 상세 모습과 그 하위 컴포넌트들

Context Group의 상세 모습과 그 하위 컴포넌트들


3.2.1. 주요 기능

Context Group에 관계된 주요 하위 컴포넌트들과 기능들은 다음과 같다.

  • Virtual Host

    Virtual Host(이하 가상 호스트)는 Context Group 레벨에서 설정한다. 여러 개의 가상 호스트들이 추가 될 수 있으며 각 가상 호스트에는 여러 개의 웹 Context를 디플로이할 수 있다. 가상 호스트에 대해서는 “제7장 가상 호스트”를 참고한다.

  • Context

    Context는 Context Group과 웹 컨테이너에서 실행되는 웹 애플리케이션과 동일한 개념이다. 여러 개의 Context가 한 개의 Context Group에 디플로이될 수 있으며, Context Group과 웹 컨테이너의 서비스들을 모두 사용할 수 있다.

    또한 Context는 Context Group 바로 아래에 또는 Context Group 내의 가상 호스트에 바로 디플로이가 가능하다. 전자의 경우에는 Context가 묵시적으로 기본 가상 호스트에 속한다고 볼 수 있다.

    Context에 대한 자세한 설명은 “제6장 Web Context(웹 애플리케이션)”을 참고한다.

  • Web Server 연결

    요청을 받아들이고 적당한 웹 애플리케이션에 전달하기 위해서는 클라이언트의 HTTP 요청을 받아 적절한 Context Group에 전달하는 웹 서버와의 연결을 설정해야 한다.

    그러므로 Context Group 내의 Context들은 그 Context Group에 설정된 웹 서버를 통해서만 요청을 받을 수 있다. 이 의미는 2가지 다른 Context Group에 등록된 각기 다른 Context는 서로 다른 웹 서버의 서비스를 받을 수 있다는 것이다. 이것이 각 Context Group이 논리적으로 각기 다른 가상 호스트로 등록될 수 있는 주요한 이유이다.

    웹 서버 연결에 대한 내용은 Context Group 레벨에서 설정되지만 중요하고 큰 주제이므로 이에 대한 자세한 설명은 “제4장 웹 서버 연결과 클러스터링”를 참고한다.

  • 인코딩

    Context Group은 등록된 모든 Context에 의해 사용될 수 있는 인코딩 설정을 가지고 있다. 설정에 대한 자세한 내용은 “3.3.2. 인코딩 설정”을 참고한다.

  • JSP Engine

    각 Context Group은 JSP 엔진을 포함하고 있다고도 볼 수 있다. JSP 엔진은 “jsp” 자원을 클라이언트가 요청하였을 때 JSP 페이지들을 컴파일 하여 Servlet 코드로 만드는 작업을 한다.

    설정에 대한 자세한 내용은 “3.3.3. JSP 엔진 설정”을 참고한다.

  • logging

    logging 옵션을 <web-container>에 설정하면 모든 Context Group에 공통으로 적용되고, <context-group>에 설정하면 설정한 Context Group에만 적용된다. 설정에 대한 자세한 내용은 “3.3.4. Logging 설정”을 참고한다.

  • Session 관리(웹 컨테이너에서의 설정을 재설정)

    Context Group에 Session 관련 설정을 할 수 있다. 설정에 대한 자세한 내용은 “3.3.5. Session 설정”을 참고한다.

  • Response Header

    사용자 임의의 HTTP Header Response 이름과 값의 짝으로 정의해서 사용한다. 설정에 대한 자세한 내용은 “3.3.6. Response Header 설정”을 참고한다.

3.2.2. 디렉터리 구조

다음은 Context Group과 관계된 JEUS 시스템 디렉터리에 대한 설명이다.

[그림 3.3] Context Group 디렉터리 구조

Context Group 디렉터리 구조


JEUS_HOME\config\<node-name>\<node-name>_servlet_<engine-name>

Context Group을 설정하기 위한 WEBMain.xml을 가지고 있다. Context는 별도의 파일에 설정된다(jeus-web-dd.xml).

JEUS_HOME\logs\<node-name>\<node-name>_<container-name>\servlet

웹 컨테이너를 위한 로그 파일을 보관하는 최상위 디렉터리이다. 사용자가 Context Group별 로그를 설정하는 경우 다음과 같은 구조로 로그 파일이 생성된다.

  • userlog\<context group name>

    user logging 메시지들이 여기에 저장된다. 이 디렉터리는 <valid-day> 설정이 되어 있지 않으면 다음 디렉터리 하위에 user.log가 생성된다.

    JEUS_HOME\logs\<node-name>\<node-name>_<container-name>\servlet\userlog\<context-group-name>\

    <valid-day>가 사용되면 이 디렉터리 하위의 파일들은 주어진 날들 동안 유효하고, “user_MMDDYYYY.log”와 같이 파일명이 생성된다.

  • errorlog

    error logging 메시지 파일은 Context Group별로 따로 설정할 수 없다. 또한, errorlog 설정은 JEUSMain.xml을 통해서만 설정할 수 있다("JEUS Server 안내서" 참조). 따라서, error logging 파일은 Context Group별로 구분하지 않는다.

  • accesslog\<context-group-name>

    access logging 메시지들이 저장된다.<valid-day> 설정이 되어 있지 않으면 다음 디렉터리 하위에 access.log가 생성된다.

    JEUS_HOME\logs\<node-name>\<node-name>_ <container-name>\servlet\accesslog\<context-group-name>\

    <valid-day>가 사용되면 이 디렉터리 하위의 파일들은 주어진 날들 동안 유효하고 “access_MMDDYYYY.log”와 같은 이름의 파일이 생성된다.

3.3. Context Group 설정

Context Group을 추가하고 설정하는 방법은 간단하다. 그리고, 모든 설정은 엔진 설정 디렉터리의 WEBMain.xml 파일 내에 존재한다.

참고

1. WebAdmin을 이용하여 WEBMain.xml에서 Context Group의 설정에 대한 설명은 "JEUS WebAdmin 안내서"의 Context Group 설정을 참고한다.

2. 본 절에서는 Context Group의 설정 가능한 모든 컴포넌트들에 대하여 설명한다. 더 상세한 설명은 <context-group> 태그에 대한 설명이 있는 JEUS_HOME\docs\reference\schema\index.html의 WEBMain.xml XML Reference를 참고한다.

수작업으로 환경을 편집하려면 WEBMain.xml 파일의 <web-container> 태그 아래에 <context-group> 태그를 추가해서 설정한다.

[예 3.1] Context Group 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    ...
    <context-group>
        . . . 
    </context-group>
    <context-group>
        ...
    </context-group>
    ...
</web-container>


다음은 위의 컴포넌트들의 설정 사항들이 포함된 WEBMain.xml 파일의 예이다. 이 예는 XML 규칙과 순서만 보여주지만, 뒤이어 설명될 하위 절에서는 각 XML 부분들이 구체적으로 어떻게 설정되는지 설명한다.

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    . . .
    <context-group>
        <group-name>MyGroup</group-name>
        <virtual-host>
            <!-- See chapter “제7장 가상 호스트” -->
        </virtual-host>
        <webserver-connection>
            <!-- See chapter “제4장 웹 서버 연결과 클러스터링” -->   
        </webserver-connection>
        <attach-stacktrace-on-error>...</attach-stacktrace-on-error>
        <encoding>
            <!-- See sub-section “3.3.2. 인코딩 설정” -->   
        </encoding>
        <jsp-engine>
            <!-- See sub-section “3.3.3. JSP 엔진 설정” -->
        </jsp-engine>
        <logging>
            <!-- See sub-section “3.3.4. Logging 설정” -->
        </logging>
        <session-config>
            <!-- See chapter “3.3.5. Session 설정” -->
        </session-config>
        <response-header>
            <!-- See sub-section “3.3.6. Response Header 설정” -->
        </response-header>
    </context-group>
    . . .
</web-container>

3.3.1. 기본 설정

Context Group의 기본 설정은 WEBMain.xml의 <context-group> 태그 바로 하위에 설정되고 다음과 같이 정의된다.

[예 3.2] Context Group 기본 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    <context-group>
        <group-name>MyGroup</group-name>
        <default-error-page>/home/user1/error.html</default-error-page>
        <attach-stacktrace-on-error>true</attach-stacktrace-on-error>
    </context-group>
</web-container>


다음은 설정 항목에 대한 설명이다.

항목설명
<group-name>내부적으로 통용되는 Context Group의 식별자이다.
<attach-stacktrace-on-error>서버에 문제가 발생하였을 때 오류의 상세 내역을 브라우저로 보여줄 것인지에 대한 설정이며, Boolean 값으로 설정한다. 이 메시지는 개발할 때는 유용하지만 운영할 때는 제거하는 것이 바람직하다.
<default-error-page>존재하는 않는 웹 컨텍스트에 대한 오류 요청을 처리할 때 보여줄 페이지의 절대 경로를 지정한다. html 또는 htm 파일만 설정가능하다. 여기에 설정된 값은 HTTP 응답 내용으로만 쓰일 뿐이며, forward 개념이 아니다.

다음의 하위 절들은 <context grpup> 하위 컴포넌트들이 어떻게 설정되는지에 대해 설명한다.

3.3.2. 인코딩 설정

Context Group은 등록된 모든 Context에 의해 사용될 수 있는 인코딩 설정을 가지고 있다.

여기에는 3가지의 인코딩 설정이 존재한다.

  • <request-url-encoding>

    • HTTP 요청 URL을 위한 인코딩이다.

      <request-url-encoding>은 웹 브라우저로부터 받은 HTTP 요청의 Request Line에 적용된다. <request-url-encoding>이 설정되지 않은 경우에는 <request-encoding>이 적용된다.

      일반적으로 <request-url-encoding>을 지정해야 하는 경우는 HTTP Request Line의 인코딩이 HTTP body와 다른 특별한 경우이다.

    • <request-url-encoding>은 다음의 순서에 따라 결정된다.

      1. WEBMain.xml에 정의된 <forced> 인코딩

      2. WEBMain.xml에 정의된 <default> 인코딩

      3. 위의 어떤 것도 적용되지 않으면 기본적으로 “ISO-8859-1”로 설정

      위의 목록에서 첫 번째 설정이 가장 높은 우선순위를 가지며 첫 번째 설정이 없을 경우 두 번째 설정이 적용되는 식으로 순차적으로 우선순위를 갖는다. 단, 사용자가 Request 객체에 setCharacterEncoding()으로 설정한 경우 query string 및 쿠키에 대해서는 사용자가 설정한 인코딩이 최우선적으로 적용된다.

      따라서 관리자는 WEBMain.xml에 <default>와 <forced> 요청 인코딩을 정의할 수 있다. <default>와 <forced>를 동시에 설정하는 것은 의미가 없으므로 하나만 설정하도록 한다.

  • <request-encoding>

    • HTTP Request header의 query string,쿠키 및 postdata에 사용되는 인코딩이다. 이 인코딩은 jeus-web-dd.xml에서도 설정이 가능하며, 해당 파일의 설정이 우선적으로 적용된다.

    • Request 인코딩은 다음의 순서에 따라 결정된다.

      1. 애플리케이션(Servlet/JSP)에서의 설정(request.setCharacterEncoding()으로 설정한 인코딩)

      2. WEBMain.xml에 정의된 <forced> 인코딩

      3. HTTP요청의 Content-Type의 charset에 의한 인코딩

      4. WEBMain.xml에 정의된 <default>인코딩

      5. 위의 어떤 것도 적용되지 않으면 기본적으로 “ISO-8859-1”로 설정

      위의 목록에서 첫 번째 설정이 가장 높은 우선순위를 가지며 첫 번째 설정이 없을 경우 두 번째 설정이 적용되는 식으로 순차적으로 우선순위를 갖게 된다.

    • HTTP Request Line의 query string은 다음과 같은 우선순위로 인코딩이 적용된다.

      1. request.setCharacterEncoding()으로 지정한 인코딩

      2. <request-url-encoding> (애플리케이션에서 설정되지 않은 경우)

      3. <request-encoding> (<request-url-encoding>이 설정되지 않은 경우)

  • <response-encoding>

    • 웹 컨테이너로부터 받은 전체 응답 HTTP 메시지에 적용되는 인코딩이다.

      <response-encoding>은 PrintWriter.println()을 byte 배열로 변환할 때나 HTTP 헤더의 “Content-Type:text/html;charset=XXX” 부분의 “XXX” 값을 설정하고 웹 컨테이너의 응답에 어떤 인코딩을 사용할지 결정한다. 이 인코딩도 역시 jeus-web-dd.xml에서도 설정이 가능하며 해당 파일의 설정이 우선적으로 적용된다.

    • <response-encoding>은 다음의 우선순위 목록에 따라 결정된다.

      1. WEBMain.xml에 정의된 <forced> 인코딩

      2. Servlet에서의 설정

        • Servlet에서는 response.setContentType (”text/html;charset=XXX”)

        • JSP에서는 <%@ page contentType=”text/html;charset=XXX”%>로 프로그래머가 설정한 XXX 값의 인코딩

      3. WEBMain.xml에 정의된 <default> 인코딩

      4. 위의 어떤 것도 적용되지 않으면 기본적으로 “ISO-8859-1”로 설정

      위의 목록에서 첫 번째 설정이 가장 높은 우선순위를 가지며 첫 번째 설정이 없을 경우 두 번째 설정이 적용되는 식으로 순차적으로 우선순위를 갖게 된다.

      위의 내용처럼 관리자는 WEBMain.xml에 <default>와 <forced> Response encoding을 정의할 수 있다.

다음은 Context Group에서 인코딩을 설정한 예로 WEBMain.xml에 <request-url-encoding>, <request-encoding>, <response-encoding> 태그를 이용하여 설정할 수 있다.

[예 3.3] Context Group 인코딩 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    . . .
    <context-group>
        . . .
        <encoding>
            <request-url-encoding>
                <forced>UTF-8</forced>
            </request-url-encoding>
            <request-encoding>
                <default>EUC-KR</default>
            </request-encoding>
            <response-encoding>
                <default>EUC-KR</default>
            </response-encoding>
        </encoding>
    </context-group>
</web-container>

참고

각 설정은 <default>나 <forced>로 설정 가능하다. 전자는 어떤 인코딩도 없을 경우에 기본값으로 사용하고 후자는 모든 경우에 항상 강제적으로 사용하도록 한다.

다음 목록은 Servlet/JSP 프로그래머나 JEUS 관리자가 WEBMain.xml에 흔히 설정할 수 있는 인코딩 값들이다.

  • ISO-8859-1(웹 컨테이너에서 기본으로 사용하고 있는 인코딩, ISO Latin)

  • UTF-8(UCS 변환 포맷)

  • EUC-KR(한국어)

  • EUC-JP(일본어)

3.3.3. JSP 엔진 설정

각 Context Group은 JSP 엔진을 포함하고 있다. JSP 엔진은 “jsp” 자원을 클라이언트가 요청하였을 때 JSP 페이지들을 컴파일하여 Servlet 코드로 만드는 작업을 한다. JSP 엔진의 설정은 Context가 속하는 Context Group의 설정을 상속받는다. JSP에 대한 자세한 정보는 JSP 2.1 스펙을 참고한다.

각 Context Group에는 JSP 엔진(JSP 컴파일러)이 웹 애플리케이션에 대하여 어떻게 동작해야 하는지에 대한 설정을 한다.

다음은 JSP 엔진 설정에 대한 예로 WEBMain.xml의 <context-group> 태그 내의 <jsp-engine>에 설정한다.

[예 3.4] JSP 엔진 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    . . .
    <context-group>
        . . .
        <jsp-engine>
            <keep-generated>true</keep-generated>
            <java-compiler>javac</java-compiler>
            <jsp-work-dir>c:\MyJSPWorkdir\</jsp-work-dir>
            <compile-output-dir>
                c:\MyJSPWorkdir\
            </compile-output-dir>
            <compile-option>-g:none –verbose</compile-option>
            <compile-encoding>8859_1</compile-encoding>
            <check-included-jspfile>true</check-included-jspfile>
        </jsp-engine>
        . . .
    </context-group>
    . . .
</web-container>

다음은 설정 태그에 대한 설명이다.

  • <java-compiler>, <compile-output-dir>, <compiler-option>, <compiler-encoding>

    • Java compiler options으로 JSP에서 생성된 java 소스 코드를 Servlet 클래스 파일로 컴파일할 때 필요한 컴파일러를 설정한다.

    • 다음과 같은 옵션을 포함한다.

      옵션설명
      <java-compiler>java compiler 실행 명령어이다. (예: “javac”)
      <compile-output-dir>JSP에서 생성된 클래스 파일의 위치이다.
      <compiler-option>java compiler 실행 옵션이다. (예: “-verbose –g:none”)
      <compiler-encoding>이 설정은 웹 컨테이너가 적당한 인코딩을 알아서 지정하므로 많이 사용되지 않는다. (예: “UTF8”)
  • <jsp-work-dir>

    • JSP에서 생성된 Java 소스 파일들이 저장되는 루트 디렉터리를 지정한다.

    • <compile-output-dir>을 설정하지 않고 <jsp-work-dir>만 지정한 경우 클래스 파일도 동일한 위치에 생성된다.

      <jsp-work-dir>을 지정하지 않는 경우 파일은 EAR 애플리케이션과 모듈을 구분하여, 디폴트 디렉터리(JEUS_HOME\webhome\<container_name>\_generated_\) 하위에 생성된 각각의 디렉터리에 저장된다.

      각 디렉터리의 경로는 다음과 같다.

      • EAR 애플리케이션

        JEUS_HOME\webhome\<container_name>\_generated_\<application_name>\
      • 모듈

        JEUS_HOME\webhome\<container_name>\_generated_\<module_name>\
  • <keep-generated>

    • Boolean 옵션으로 JSP 포맷에서 변환을 거친 후 Servlet 소스 코드의 저장 여부를 결정한다. 디버깅을 위해서 이 옵션을 true로 설정해 놓으면 유용하다.

  • <check-included-jspfile>

    • true로 설정하면 요청한 JSP 페이지뿐만 아니라 <%@ include file=”xxx.jsp” %> directive로 include된 모든 JSP들에 대하여 변경되었는지 확인한다.

    • 이 설정이 true로 설정되고 include된 JSP 파일이 변경되었음이 확인되면 변경된 파일은 재컴파일된다. 기본 설정인 false는 변경을 확인하지 않는다. 즉, 요청된 JSP만 변경을 확인한다.

3.3.4. Logging 설정

Logging 옵션을 <web-container>에 설정하면 모든 Context Group에 공통으로 적용되고, <context-group>에 설정하면 설정한 Context Group에만 적용된다. <context-group>에 설정된 Logging은 <web-container>에 설정된 Logging보다 우선한다.

<context-group>의 하위 요소로 설정하는 <logging>은 <web-container>의 하위 요소로 설정하는 <logging>과 그 구성이 동일하다. 따라서, 자세한 설정은 “2.4. Logging 설정”을 참고한다.

별도의 설정이 없을 경우 웹 컨테이너 당 1개의 Access log 및 User log 파일이 생성된다.

JEUS의 log의 기본 위치(JEUS_LOGHOME)는 JEUS_HOME\logs\<node-name>이다. GroupName은 <context-group>의 하위 요소인 <group-name>으로 설정된 값이다.

Context Group에서 설정 가능한 로그는 다음과 같다.

  • Access log

    • Context Group에 대한 모든 요청과 사용자 접근이 별도의 로그 파일에 남는다.

      요청이 극도로 빈번한 사이트에서는 Access log의 양이 방대해질 수가 있으므로, Access log 기능을 사용하지 않는 것이 좋다.

    • 기본 위치

      기본 로그 파일은 다음의 위치에 생성이 된다.

      JEUS_LOGHOME\<node-name>_<container-name>\servlet\accesslog\<GroupName>\access.log

      다음은 JEUS_HOME이 'c:\jeus6'이고 node_name이 'johan', container_name이 'container1', GroupName이 'MyGroup'인 경우 기본 로그 파일이다.

      c:\jeus6\logs\johan_container1\servlet\accesslog\MyGroup\access.log
  • User log

    • Servlet에서 생성된 메시지와 ServletContext.log() 메소드에 의해 생성된 내용들이 별도의 User log 남겨진다.

    • 기본 위치

      다음의 위치에 로그 파일이 생성된다.

      JEUS_LOGHOME\<node-name>_<container-name>\servlet\userlog\<GroupName>\user.log 

      다음은 JEUS_HOME이 'c:\jeus6'이고 node_name이 'johan', container_name이 'container1', GroupName이 'MyGroup'인 경우 로그 파일이다.

      c:\jeus6\logs\johan_container1\servlet\userlog\MyGroup\user.log

Context Group에 관련하여 마지막으로 설정할 수 있는 것은 Logging이다. 여기에는 2가지 종류의 Logging 메시지가 있다.

Logging 메시지설명
User 메시지ServletContext.log() 메소드 호출로 Servlet 프로그래머에 의해 지정된 Logging 데이터이다.
Access 로그Context Group과 그 Context의 모든 클라이언트 요청을 레코딩한다.

이 설정들은 WEBMain.xml의 <context-group><logging> 태그의 각기 다른 태그(<user-log>, <access-log>)로 설정된다.

참고

공통 설정 항목, Access log 및 User log 관련 설정 항목에 대한 설명은 각각 “2.4.1. 공통 설정 항목”, “2.4.2. Access log 관련 설정 항목”, “2.4.3. User log 관련 설정 항목”을 참고한다.

3.3.5. Session 설정

Context Group에 Session 관련 설정을 할 수 있다. 이 설정은 웹 컨테이너에서 설정한 것과 동일하다. 다만 Context Group에서의 설정은 웹 컨테이너에서의 설정보다 높은 우선순위를 가지고 적용된다. 자세한 내용은 “2.3.7. Session”을 참고한다.

다음은 Context Group 레벨에서 Session을 설정한 예이다.

[예 3.5] Context Group 레벨에서 Session 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    . . .
    <context-group>
        . . .
       <session-config>
           <distributable>false</distributable>
           <shared>false</shared>
           <timeout>30</timeout>
           <reload-persistent>false</reload-persistent>
           <url-rewriting>false</url-rewriting>
           <session-cookie>
               <jsessionid-name>JSESSIONID</jsessionid-name>
               <version>0</version>
               <path>/</path>
               <max-age>-1</max-age>
               <secure>false</secure>
           </session-cookie>
       </session-config>
        . . .
    </context-group>
    . . .
</web-container>

3.3.6. Response Header 설정

사용자 임의의 HTTP Response Header를 이름과 값의 짝으로 정의할 수 있다.

Custom Response Header는 각 Context Group 하위의 <response-header><custom-header> 태그에 설정된다. 이 태그가 존재하면 다음의 두 항목과 함께 여러 개의 <header-field> 태그가 포함 될 수 있다.

다음은 Response Header를 설정한 예이다.

[예 3.6] Response Header 설정 : <<WEBMain.xml>>

<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    . . .
    <context-group>
        . . .
        <response-header>
            <custom-header>
                <header-field>
                    <field-name>Test</field-name>
                    <field-value>TestValue</field-value>
                </header-field>
            </custom-header>
        </response-header>
        . . .
    </context-group>
    . . .
</web-container>


다음은 설정 태그에 대한 설명이다.

  • <header-field>

    태그설명
    <field-name><custom header> 필드의 이름을 지정한다.
    <field-value><field name>과 함께 전달될 값을 지정한다.

3.4. Context Group 모니터링

Context Group은 콘솔 툴(jeusadmin)WebAdmin을 사용해서 모니터링할 수 있다.

콘솔 툴(jeusadmin)을 사용한 Context Group 모니터링

jeusadmin에서 info 명령어를 실행하면 디플로이되어 있는 모든 Context Group의 목록을 조회할 수 있다.

다음은 특정 Context Group에 대한 정보를 조회하는 방법이다.

> info <context group name>

WebAdmin을 사용한 Context Group 모니터링

WebAdmin을 사용하여 Context Group을 모니터링할 수 있다.

WebAdmin 화면 왼쪽의 JEUS 노드 트리에서 [JEUS 매니저] > [엔진 컨테이너] > [container name] > [엔진] > [서블릿 엔진] > [컨텍스트 그룹]에서 '컨텍스트 그룹 이름'을 클릭하면 해당 Context Group에 대한 정보를 조회할 수 있다.

3.5. Context Group 튜닝

Context Group의 최적화된 성능을 주기 위해서는 다음을 반드시 고려해야 한다.

  • 일반적으로 JSP 엔진의 컴파일러는 변경 할 필요가 없다. “sun.tools.javac” 설정으로 그대로 유지하여 또 다른 외부 프로세스가 JSP 페이지를 컴파일할 때 필요하지 않도록 한다.

  • <check-included-jspfile>는 include된 JSP들이 자주 변경되지 않는다면 설정을 false로 유지한다. 이것은 include된 JSP 파일들에 대한 변경 점검을 하지 않기 때문에 성능 향상에 도움이 된다.

  • 모든 종류의 로그는 성능 향상을 위하여 다음의 설정을 사용한다.

    • "fatal" 로그 레벨과 “file” 타겟

    • 큰 버퍼 사이즈