제2장 JEUS 설정

내용 목차

2.1. 개요
2.1.1. JEUS Manager의 설정
2.1.2. 실행 스크립트에 Java –D 파라미터 추가
2.2. 노드 설정
2.2.1. 기본 노드 설정
2.2.2. 가상 노드 설정
2.2.3. 노드 클러스터링 설정
2.3. 엔진 컨테이너 설정
2.3.1. 기본 설정
2.3.2. Invocation Manager 설정
2.3.3. 데이터베이스 매핑 설정
2.3.4. Lifecycle Method Invocation 설정
2.3.5. 기타 엔진 컨테이너 설정
2.4. 엔진 설정
2.4.1. 엔진 종류 설정
2.4.2. 웹 서버 엔진 설정
2.5. JEUS 튜닝 고려사항

본 장에서는 JEUS의 구성 요소들인 JEUS Manager, 엔진 컨테이너, 엔진의 설정 방법 및 기타 부가 기능의 설정 방법에 대해 설명한다.

2.1. 개요

JEUS의 주요 설정은 JEUSMain.xml 파일에서 설정된다. 이 파일은 다음의 경로에 저장되어 있다.

JEUS_HOME\config\<node-name>

경로에 포함되어 있는 <node-name>은 기본적으로 JEUS가 동작하는 호스트 이름으로 지정된다.

[그림 2.1] JEUSMain.xml 위치

JEUSMain.xml 위치


JEUSMain.xml 파일의 최상위 XML 태그는 <jeus-system> 이다.

<jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    ...
</jeus-system>

참고

이곳에서는 JEUSMain.xml 파일에 대하여 개략적으로 설명하고 있으므로 전반적인 자세한 내용은 "JEUS_HOME\docs\reference\schema\index.htm"에 있는 XML Reference 예제를 참조한다.

앞으로의 예에서 root element의 xmlns=http://www.tmaxsoft.com/xml/ns/jeus 설정은 생략하겠다. 다음 절에서 문서 편집기 등을 이용해서 XML 을 직접 편집하는 방법으로 JEUSMain.xml을 수동으로 설정하는 방법에 관하여 설명하고 있다. WebAdmin을 이용하여 JEUSMain.xml을 설정하는 방법은 "JEUS WebAdmin 안내서"를 참조한다.

2.1.1. JEUS Manager의 설정

JEUS Manager의 설정과 관련해서 앞으로 설명할 각종 속성들은 모두 JEUSMain.xml 파일의 <jeus-system> Element 내에 설정되어야 한다.

다음의 XML 예제는 JEUSMain.xml 파일의 내용 중 최상위 레벨의 XML 구조이다.

[예 2.1] JEUS Manager의 설정 : <<JEUSMain.xml>>

<jeus-system>
    <node>
        . . . <!-- Node Configuration -->
    </node>
    <node>
        . . .
    </node>
    <node>
        . . .
    </node>

    <naming-server>
       . . . <!-- JNDI Configuration -->
    </naming-server>

    <security-manager>
       . . . <!-- Security Configuration -->
    </security-manager>

    <resource>
       . . . <!-- Resources Configuration -->
    </resource>
    <application>
       . . . <!-- Application Deployment Configuration -->
    </application>
</jeus-system>


예제에는 노드 관련 설정 이외에 하나의 JEUSMain.xml 파일 안에 한 번씩만 설정할 수 있는 속성으로 JNDI Naming Server, Security Manager의 설정을 포함하고 있다. 만약 이 태그들을 설정하지 않으면 기본값을 사용한다. 또한 등록하고 싶은 Resource, 디플로이할 애플리케이션에 대한 설정 태그도 포함하고 있다.

다음은 설정에 사용되는 각 태그에 대한 설명이다.

태그설명
<node>

각각의 JEUSMain.xml 파일은 여러 개의 노드에 관한 설정을 가지고 있을 수 있지만, JEUS Manager 는 그 중 단 한 개의 설정만을 따라서 동작한다.

동작에 대한 자세한 내용은 “제4장 JEUS 클러스터링”에서 설명하도록 한다. 단일 노드에 관한 설정 방법은 “2.2. 노드 설정”을 참조한다.

<naming-server>“제6장 JNDI Naming Server”를 참조한다.
<security-manager>JEUS Security 안내서”의 “제2장 보안 시스템의 설정”을 참조한다.
<resource>“제7장 External Resource”를 참조한다.
<application>JEUS가 기동할 때 디플로이되는 애플리케이션을 지정한다.

각각의 JEUSMain.xml 파일은 여러 개의 노드에 관한 설정을 가지고 있을 수 있지만, JEUS Manager는 그 중 단 한 개의 설정만을 따라서 동작한다.

위의 예제를 보면 실제 JEUS Manager가 사용할 내용은 한 개뿐인데도 여러 개의 노드관련 설정이 들어 있는 것을 볼 수 있다. 이중에서 실제 사용될 부분은 현재 컴퓨터의 호스트 이름과 동일한 이름을 가지고 있는 부분의 설정이다. 이와 관련된 자세한 내용은 “제4장 JEUS 클러스터링”에서 설명한다. 단일 노드에 관한 설정 방법은 “2.2. 노드 설정”을 참조한다.

2.1.2. 실행 스크립트에 Java –D 파라미터 추가

jeus 명령은 JEUS Manager를 실행하는 스크립트이다. JEUSMain.xml 설정과는 별개로 jeus 명령을 수정하여 런타임에 필요한 파라미터를 제공할 수 있다.

옵션 추가는 ‘jeus’ 명령이 JVM 을 실행하여 JEUS Manager가 동작하도록 하기 위해 작성된 스크립트인 관계로 특정 위치(JEUS_HOME\bin\)에서 실행 스크립트(jeus)를 열어서 편집하는 간단한 작업이 된다.

참고

1. 소개한 “–D” 옵션의 파라미터들은 이 스크립트에서 반드시 사용되어야만 한다(-classpath 다음에 적는다). 이 파라미터를 사용해서 JEUS Manager와 JEUS의 실행을 조정할 수 있다. 예를 들어 –D 파라미터를 이용해서 JEUS base port 또는 JEUS home 경로 등을 수정할 수 있다.

2. 명령의 종류와 용도에 관해서는 JEUS Reference Book”의 “제3장 jeus”에서 자세히 확인할 수 있다.

2.2. 노드 설정

JEUS 노드를 JEUS 시스템에 추가하려면 JEUSMain.xml의 <node> 태그에 추가해야 한다. 이 요소는 최상위의 <jeus-system> 내에 위치한다. 적어도 하나의 노드가 각 JEUSMain.xml에 설정되어야만 한다.

[예 2.2] 노드 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
        . . .
    </node>
    . . .
</jeus-system>

노드 클러스터를 설정하는 경우 “2.2.3. 노드 클러스터링 설정”에서 설명하는 특별한 설정 구조를 적용할 필요가 있다.


2.2.1. 기본 노드 설정

다음은 기본 노드 설정에 대한 예이다. XML 설정 부분에서 노드의 머신 이름은 'johan'이고 엔진 컨테이너가 순차적으로 시작되며, Class FTP 서버와 WebAdmin을 사용함을 알 수 있다.

[예 2.3] 기본 노드 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
        <name>johan</name>
        <listener>
            <backlog>128</backlog>
            <ssl>9937</ssl>
            <thread-pool>
                <min>3</min>
                <max>40</max>
                <period>3600000</period>
            <thread-pool>
        </listener>
        <sequential-start>true</sequential-start>
        <class-ftp>true</class-ftp>
        <enable-webadmin>true</enable-webadmin>
        <webadmin-config>
            <allowed-server>192.168.*.*</allowed-server>
            <allowed-server>211.180.1.*</allowed-server>
        </webadmin-config> 
        . . .
    </node>
    . . .
</jeus-system>

다음은 설정에 사용되는 각 태그에 대한 설명이다.


  • <name>

    • JEUS 시스템 내에서 노드의 식별자로 클러스터링 환경 내에서 유일한 이름을 가진다.

    • 기본적으로 노드의 이름은 노드와 노드 관리자가 동작하고 있는 물리적인 호스트의 네트워크 식별 이름과 동일한 이름이다. 이는 시스템 관리자에 의해 설정되고 UNIX에서 “uname –n” 명령을 수행하거나 Windows 환경에서 컴퓨터의 네트워크 이름을 확인하여 얻을 수 있다.

      예를 들어 만약 어떤 물리적 머신의 네트워크 이름이 'johan'이라면, 그곳에서 동작하는 JEUS 노드의 이름 또한 'johan'이어야 한다. 런타임 때에 이 이름은 java.net.InetAddress. getLocalHost().getHostName()을 통해서 얻을 수 있다. 단, Virtual Host 기능을 사용하면 노드의 이름을 임의로 지정할 수 있다.

    주의

    노드의 이름은 영문자와 숫자의 조합으로만 이루어져야 하고, 영문자로 시작하는 문자열이어야 한다.

  • <listener>

    • JEUS Base Port를 통해 통신하기 위해 필요한 여러 가지 설정의 집합이다. 대부분의 경우 별도로 이 설정을 하지 않아도 무방하다.

    • 다음은 Listener의 하위 설정 항목에 대한 설명이다.

      항목설명
      <backlog>JEUS System Listener Port인 JEUS Base Port에 대한 backlog 값을 지정한다.
      <ssl>JEUS Security System에 관련된 SSL 속성을 지정한다. 이 element를 설정하면 Jeus Security System을 사용하는 모든 소켓 커넥션에 SSL이 적용된다.
      <thread-pool>JEUS System Listener Port인 JEUS Base Port에 요청되는 소켓 커넥션 처리를 위한 Thread Pool을 설정한다.
  • <backup-node>

    • 현재 노드가 어떤 노드에 심각한 장애가 발생할 경우 그 노드를 대신해서 동작해야 할 대상 노드의 이름이다. 자세한 내용은 “제4장 JEUS 클러스터링”을 참조한다.

  • <sequential-start>

    • 엔진 컨테이너들이 순차적으로 시작될 지 여부를 결정하는 설정이다.

    • false로 설정될 경우 각 엔진 컨테이너가 동시에 시작된다. (기본값: false)

  • <class-ftp>

    • EJB Stub을 클라이언트로 전송하기 위한 Class FTP 서버를 사용할지의 여부를 결정하는 설정이다.

    • false로 설정해 놓고 EJB 클라이언트에 EJB Stub이 없다면 에러가 발생할 수 있다. (기본값: false)

  • <enable-webadmin>

    • WebAdmin을 사용할지 여부를 결정하는 설정이다. (기본값: false)

  • <webadmin-config>

    • 해당 호스트들이 WebAdmin에 접근할 수 있도록 하는 설정이다.

    • 하위 항목에 호스트 리스트를 설정한다.

      항목설명
      <allowed-server>

      WebAdmin에 접근할 권한을 갖는 호스트 목록의 IP 주소를 설정한다.

      여기에 설정된 주소의 호스트만이 WebAdmin에 접근할 수 있다. 설정되는 IP 주소에 wildcard(*)를 사용할 수 있다. (예: 192.168.*.*)

      <suspend-on-boot>WebAdmin 디플로이 이후 접근 가능 여부를 설정한다. 이 값이 true 일 경우 콘솔 툴에서 resume-webadmin 을 수행해야만 접근 가능하다. (기본값: false)

그 외 JEUSMain.xml의 XML 설정 요소들에 따라 설정 가능한 노드 하부 구성 요소는 다음과 같다.

구성 요소XML 요소 이름관련 부분
엔진 컨테이너<engine-container>“2.3. 엔진 컨테이너 설정”
Logging<system-logging>“제11장 Logging”
중앙 세션 서버<session-server>“10.2. 중앙 세션 서버”
분산 세션 서버<session-router-config>“10.3. 분산 세션 서버”
JMX 관리자<jmx-manager>"JEUS JMX 안내서"
스케줄러 <scheduler>"JEUS Schduler 안내서"
JNLP Server <enable-jnlp>"JEUS Client Application 안내서"

이 구성 요소들 중 몇몇은 복잡하고 별도의 처리를 요구하기도 한다. 각 구성 요소에 대한 자세한 내용은 관련 부분을 참고한다.

2.2.2. 가상 노드 설정

가상 노드는 JEUS_HOME\config\vhost.properties 파일에 설정한다.

[예 2.4] 가상 노드 설정 : <<vhost.properties>>

jeus.vhost.enabled=true
node1=myhost:9736
node2=myhost:9836
node3=yourhost:9936
node4=yourhost:10036    

각 프로퍼티의 설명은 다음과 같다.

프로퍼티설명
jeus.vhost.enabled가상 호스트 설정을 적용할지 여부를 지정한다.
{vitual_hostname}각 가상 호스트를 설정한다. value에 {real_hostname}[:{port}] 형태로 지정한다.

지정된 가상 호스트로 JEUS Manager를 실행하기 위해서는 시스템 프로퍼티 'jeus.baseport'를 사용해서 해당 Base Port를 설정하면 해당 노드 이름이 기동된다. 기본적으로 사용하는 vhost.properties 파일이 아닌 다른 파일을 사용하려면 JEUS의 시스템 프로퍼티인 'jeus.vhost.properties'를 통해 다른 파일을 지정할 수 도 있다.

참고

가상 호스트를 사용하는 경우에는 JEUS의 config 디렉터리의 node 디렉터리도 가상 노드 이름을 사용해야 하며 이 노드 내의 엔진 컨테이너나 엔진들도 가상 노드 이름을 노드 이름인 것처럼 사용해야 한다. 또한 jeusadmin 등 노드 이름을 사용하는 모든 곳에서 가상 노드 이름을 사용하면 그 가상 노드 이름에 해당하는 JEUS Manager를 지칭하게 된다.


2.2.3. 노드 클러스터링 설정

여러 노드로 구성된 JEUS 클러스터링을 설정하기 위해서는 클러스터에 속한 각각의 노드들에 대해 <node> 요소가 있어야 한다. 클러스터에 속한 모든 노드들은 JEUSMain.xml 파일에 같은 설정을 가지고 있어야 한다. 자세한 사항은 “제4장 JEUS 클러스터링”을 참조한다.

2.3. 엔진 컨테이너 설정

JEUSMain.xml의 <node>하위에 <engine-container>를 추가한다.

[예 2.5] 엔진 컨테이너 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
        . . .
        <engine-container>
           . . .
        </engine-container>
        . . .
    </node>
          . . .
</jeus-system>


2.3.1. 기본 설정

다음은 엔진 컨테이너의 기본 설정의 예제이다.

[예 2.6] 엔진 컨테이너 기본 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
        . . .
        <engine-container>
            <name>mycontainer</name>
            <base-port>3031</base-port>
            <command-option>-Xms64m -Xmx128m</command-option>
            <start-on-boot>false<start-on-boot>
            <sequential-start>true</sequential-start>
            <user-class-path>
                c:\mylib\classes;c:\mylib\lib\mylib.jar
            </user-class-path>
            <enable-interop></enable-interop>
            <use-MEJB>true</use-MEJB>
            . . .
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>


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

태그설명
<name>

임의로 엔진 컨테이너의 이름을 선택할 수 있다. 만약 이름이 “default”라고 설정되면 Default 엔진 컨테이너로 구동된다.

엔진 컨테이너의 이름으로는 영문자와 숫자의 조합만 가능하다. 단 영문자부터 시작해야 한다.

<id>

엔진 컨테이너가 사용할 ID를 0 이상 128 미만의 정수로 입력한다. 트랜잭션 매니저가 트랜잭션 ID를 생성할 때 사용하므로 recovery할 때 이 값은 fail 이전과 이후가 같아야 한다.

기본값은 name의 hashcode를 바탕으로 생성한다. 다른 엔진 컨테이너와 중복되면 컨테이너 기동이 실패한다.

<base-port>

엔진 컨테이너별로 Listen Port를 사용할 때 기본적으로 "Base Port + 15 + 컨테이너 ID * 10"의 값이 컨테이너의 Base Port로 사용된다.

트랜잭션 매니저가 트랜잭션 ID를 만들때에 사용하므로 recovery할 때 이 값은 fail 이전과 이후가 같아야 한다.

다른 엔진 컨테이너와 겹치면 컨테이너 기동이 실패한다.

<command-option>

엔진 컨테이너를 실행하기 위해 개별적인 JVM에 추가할 파라미터들을 선언하는 데 사용된다. 지정 가능한 JEUS 파라미터들의 목록은 JEUS Reference Book”의 “1.2. 서버 시스템 프로퍼티”를 참고한다.

표준 JVM 파라미터들도 설정 가능하다.

<start-on-boot>기동할 때 컨테이너를 띄울지를 정한다. 값이 false이면 기동할 때 컨테이너를 띄우지 않는다. (기본값: true)
<sequential-start>

boolean 값으로 만약 “true”라고 설정하면, 컨테이너에 존재하는 모든 엔진들이 순차적으로 시작된다. (기본값: true)

예를 들어 WS 엔진은 반드시 WS 엔진이 사용하는 서블릿 엔진이 기동되기 전에 시작되어야 한다. 따라서 JEUSMain.xml에서 서블릿 엔진 전에 WS 엔진을 정의하고 sequential start 값을 “true”로 선택하면 WS 엔진이 먼저 기동된다.

<user-class-path >

시스템 클래스 패스를 추가한다.

디폴트(default) 엔진 컨테이너에는 적용되지 않는다. 디폴트 엔진 컨테이너에 적용하기 위해서는 jeus.server.classpath system property를 사용하여야 한다. 디폴트 컨테이너가 아닌 컨테이너에 대해서는 JEUSMain.xml의 설정이 시스템 프로퍼티에 우선한다.

구분자는 세미콜론(;)(UNIX의 경우 콜론(:))을 사용한다.

<preceding-command> 엔진 컨테이너를 실행하기 전에 수행해야 할 명령을 설정한다. 엔진 컨테이너를 실행하기 위해 Java 명령어를 설정할 때 Java 명령어보다 앞서 수행해야 할 명령을 설정할 수 있다.
<enable-interop>

RMI/IIOP 상호 운영성(interoperability)에 대해서 설정한다. 이 설정이 있으면 상호 운영을 enable 한다. (기본적으로 disable되어 있다)

EJB RMI/IIOP를 사용한다면 반드시 설정되어야 한다.

<use-MEJB>

J2EE Management 스펙에서 제시하는 MEJB를 사용할 것인지를 설정한다.

사용하지 않는다면 MEJB를 디플로이하지 않는다. (기본값: false)

<application-path>

애플리케이션 archive 파일들을 넣을 디렉터리를 지정한다. 상대 경로인 경우에는 JEUS_HOME path에서의 상대 경로이다. 애플리케이션은 이 element의 순서대로 검색된다.

(기본값: webhome/app_home, jeus.apphome system property을 설정했다면 이 값이 기본값이 된다)

2.3.2. Invocation Manager 설정

Invocation manager는 엔진 컨테이너에서 서블릿/JSP, EJB Stateless Session Bean, 그리고 MDB와 같은 Stateless 메소드를 호출하는 동안 사용하는 외부 리소스(external resource)인 JDBC 커넥션과 Webt 커넥션을 추적하여 커넥션이 닫히지 않은 경우 모드에 따라 적절한 처리를 해준다.

Invocaiton manager는 JEUSMain.xml의 각 엔진 컨테이너 요소 하위에 하나의 <invocation-manager-action>으로 설정된다.

다음은 Invocation Manager 설정에 대한 예로 XML 부분은 무상태 메소드 호출 후 반환된 열려진 자원을 Invocation manager가 자동으로 닫도록 한다.

[예 2.7] Invocation Manager 설정 : <<JEUSMain.xml>>

<jeus-system>
    <node>
        . . .
        <engine-container>
            . . .
            <invocation-manager-action>
                AutoClose
            </invocation-manager-action>
            . . .
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>

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

  • <invocation-manager-action>

    설정값설명
    NoAction기능을 사용하지 않는다.
    Warning만약 하나의 자원이 Stateless 메소드 호출 동안 사용되었지만 반환할 때 닫지 않게 될 경우 이벤트가 컨테이너 로그에 warning 메시지로 기록된다.
    AutoClose만약 하나의 자원이 Stateless 메소드 호출 동안 사용되었으나 반환할 때 닫히지 않는다면 자원이 자동적으로 닫힌다.


2.3.3. 데이터베이스 매핑 설정

엔진 컨테이너 단위로 데이터베이스 매핑을 하려면 JEUSMain.xml의 <engine-container><res-ref><jndi-info> 태그를 사용해서 설정한다.

[예 2.8] Database Mapping 설정 : <<JEUSMain.xml>>

<jeus-system>
    <node>
        . . .
        <engine-container>
            . . .
            <res-ref>
                <jndi-info>
                    <ref-name>A</ref-name>
                    <export-name>B</export-name>
                </jndi-info>
            </res-ref>
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>

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

태그설명
<ref-name>데이터소스를 위한 레퍼런스 이름을 선언한다. 이 이름이 애플리케이션 코드에서 lookup할 때 사용하는 이름이다.
<export-name>

태그에는 실제 작업할 데이터소스의 export-name을 지정한다.

실제 datasource/database의 JNDI 이름이다.

위 태그에서 정의된 매핑은 해당 엔진 컨테이너에서만 적용된다.

2.3.4. Lifecycle Method Invocation 설정

엔진 컨테이너의 각종 lifecylcle 이벤트에 호출하고 싶은 메소드를 지정할 수 있다.

<lifecycle-invocation> 태그를 사용하고 다음과 같은 하위 태그를 설정한다.

[예 2.9] Lifecycle Method Invocation 설정 : <<JEUSMain.xml>>

<jeus-system>
    <node>
        . . .
        <engine-container>
            . . .
            <lifecycle-invocation>
                <class-name>lifecycle.LifeCylcleTester</class-name>
                <invocation>
                    <invocation-method>
                        <method-name>sleep</method-name>
                    </invocation-method>
                    <invocation-type>READY</invocation-type>
                </invocation>
          </lifecycle-invocation>
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>

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


  • <class-name>

    • lifecycle event의 callback 메소드가 존재하는 fully qualified class name을 지정한다.

  • <invocation>

    • 클래스 내의 invocation 세부 정보를 설정한다.

    • 다음은 하위 설정 항목이다.

      항목설명
      <invocation-method>invocation에 사용될 메소드를 지정한다.
      <invocation-argument>메소드를 호출할 때 사용하는 argument를 지정한다.
      <invocation-type>

      메소드가 호출되는 시점을 지정한다.

      • BOOT: 엔진 컨테이너가 시작되고 엔진들이 띄워지기 전의 시점이다.

      • BEFORE_DEPLOY: 엔진 컨테이너가 시작되고 이 엔진 컨테이너에게 지정된 애플리케이션이 디플로이되기 전의 시점이다.

      • AFTER_DEPLOY: 엔진 컨테이너가 시작되고 이 엔진 컨테이너에게 지정된 애플리케이션이 디플로이된 후의 시점이다.

      • READY: 엔진 컨테이너가 시작되고 이 엔진 컨테이너에게 지정된 애플리케이션이 디플로이된 후 서비스가 준비된 시점이다.

      • BEFORE_UNDEPLOY: 엔진 컨테이너가 down 명령을 받았을 때 이 엔진 컨테이너에서 운영중인 애플리케이션들을 Undeploy하기 전의 시점이다.

      • AFTER_UNDEPLOY: 엔진 컨테이너가 down 명령을 받았고 이 엔진 컨테이너에서 운영중인 애플리케이션들을 Undeploy한 후의 시점이다.

<lifecycle-invocation>에 등록하는 클래스는 일반 Java 클래스이다. 그것을 JEUS를 실행할 JDK의 javac로 컴파일해서 원하는 이름의 JAR 파일로 묶은 다음 JEUS_HOME/lib/system에 위치시킨다.

[예 2.10] <<LifeCycleTester.java>>

package lifecycle;

public class LifeCylcleTester {
    public void sleep() {
        try {
            System.out.println("Sleeping for 15 seconds ....");
            Thread.sleep(15000L);
        } catch (Exception e) {
            //ignored
        }
    }
}


2.3.5. 기타 엔진 컨테이너 설정

다음은 엔진, 트랜잭션 매니저, JMX 매니저 스케줄러 서버 설정에 대한 예이다.

[예 2.11] 기타 엔진 컨테이너 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
        . . .
        <engine-container>
            <name>mycontainer</name>
            <base-port>3031</base-port>
            <command-option>-Xms64m -Xmx128m</command-option>
            <sequential-start>true</sequential-start>
            <user-class-path>
                c:\mylib\classes;c:\mylib\lib\mylib.jar
            </user-class-path>
            <security-switch>true</security-switch>
            <engine-command>
                . . .
            </engine-command>
            <tm-config>
                . . .
            </tm-config>
            <jmx-manager>
                . . .
            </jmx-manager>
           <scheduler>
                . . . 
           </scheduler>
            . . .
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>


각 항목을 설정하기 위해서는 각각 해당하는 장을 참고한다. 다음은 이 구성요소들과 설정을 위해 필요한 XML 요소와 자세한 정보를 위해 참고할 장에 대한 설명이다.

구성 요소XML 요소 이름관련 부분
엔진<engine-command>“2.4. 엔진 설정”
트랜잰션 매니저<tm-config>“제9장 트랜잭션 매니저”
JMX Manager<jmx-manager>"JEUS JMX 안내서"
스케줄러<scheduler>"JEUS Scheduler 안내서"
Logging<user-logging>, <system-logging> “제11장 Logging”

2.4. 엔진 설정

엔진을 설정하려면 JEUSMain.xml 및 각 엔진 설정 파일(EJBMain.xml, WEBMain.xml, JMSMain.xml, ws_engine.m)에서 필요한 설정을 해야 한다.

[그림 2.2] JEUS 엔진들의 디렉터리 구조

JEUS 엔진들의 디렉터리 구조


참고

각 엔진별 설정 파일은 다은 그림의 지정된 위치에 반드시 존재해야 한다. 만약 엔진 설정 파일을 찾지 못한다면 에러가 발생한다. 웹 서버 엔진의 설정은 다른 엔진들처럼 해당 디렉터리에서 가져오는 것이 아니라 내장 웹 서버가 설치된 디렉터리의 ws_engine.m 파일을 사용한다는 점에 유의한다.

2.4.1. 엔진 종류 설정

각 엔진은 JEUSMain.xml에서 <engine-container> 요소 하위에 <engine-command> 요소에 설정한다. 반드시 하나 이상의 <engine-command> 요소가 각 <engine-container> 요소에 있어야 한다.

다음은 모든 엔진 종류가 포함된 XML 예제이다.

[예 2.12] 엔진 종류 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <node>
               . . .
        <engine-container>
            . . .
            <engine-command>
                <type>ejb</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>servlet</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>jms</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>ws</type>
                <name>engine1</name>
            </engine-command> 
            . . .
        </engine-container>
        . . .
    </node>
    . . .
</jeus-system>


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

태그설명
<name> 엔진의 설정 파일을 찾을 수 있는 엔진의 홈 디렉터리의 엔진 이름 부분과 일치해야 한다. 예를 들어서 만약 엔진 홈 디렉터리가 JEUS_HOME\config\johan\johan_servlet_engine1\ 이라면 서블릿 엔진의 이름은 'engine1'이다.
<type>

다음 중에 하나를 설정한다.

  • ejb

  • servlet

  • jms

  • ws

<system-logging>

엔진의 logging 설정을 가지고 있다. 자세한 설정 방법은 “제11장 Logging”을 참조한다.

선택 사항이므로 엔진의 로그를 따로 남기고 싶지 않으면 설정하지 않아도 된다. 그러면 엔진 컨테이너 로그나 컨테이너 로그가 없을 때는 서버 로그에 남게된다.

2.4.2. 웹 서버 엔진 설정

웹 서버 엔진이 엔진 컨테이너에 추가되었다면 웹 서버 설정 파일 또한 반드시 설정해야 한다.

설정 파일의 이름은 ws_engine.m이 되어야 하고 JEUS 웹 서버의 홈 디렉터리(JEUS_HOME\webserver) 아래의 config 폴더에 위치해야 한다. 해당 파일이 존재하지 않을 경우 이전에 생성된 wsconfig 파일을 가지고 웹 서버를 가동하게 된다.

참고

자세한 사항은 "JEUS Web Container 안내서"와 "WebtoB 매뉴얼"을 참고한다.

2.5. JEUS 튜닝 고려사항

JEUS를 설정할 때 다음을 고려한다.

  • 엔진 컨테이너의 기동시간을 줄이기 위해 순차적인 시작 옵션을 끈다. 멀티 프로세서를 가지고 있는 머신의 경우 기동시간을 줄여줄 수 있다.

  • 엔진 컨테이너 안의 엔진에서 동작하는 애플리케이션이 보안 인증과 권한 검사를 필요로 하지 않는다면 보안기능을 사용하지 않도록 설정한다.

위와는 별도로 하위 구성요소들에 대한 튜닝도 확인해야 한다. 이에 대한 설명은 각 구성요소에 대한 장을 참고한다.