JEUS 설정

본 장에서는 도메인에 서버를 추가하는 방법과 서버를 추가할 때 꼭 필요한 설정에 대해서 설명한다. 또한 서버에 설정을 변경할 때의 동작 방법에 대해서 설명한다.

1. 개요

JEUS에서는 콘솔 툴을 통해 서버의 설정을 변경할 수 있다. 서버의 엔진에서 동작하는 애플리케이션이 보안 인증과 권한 검사를 필요로 하지 않는다면 JEUS에서 보안 기능을 사용하지 않도록 설정한다.

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

2. 서버 추가

본 절에서는 콘솔 툴을 통해 도메인에 서버를 추가하는 방법과 서버를 추가할 때 반드시 필요로 하는 최소 설정에 대해 설명한다. 서버 설정에 대한 자세한 내용은 서버 설정을 참고한다.

2.1. 콘솔 툴 사용

콘솔 툴에서는 add-server 명령어를 통해 서버를 추가할 수 있다. 하지만 이 명령어로는 몇 가지 설정에 대해서만 추가할 수 있기 때문에 서버를 추가하고 난 뒤에 별도의 명령어들을 통해 설정을 변경해야 한다. 만약 엔진 설정을 변경하는 경우 웹 엔진, EJB 엔진, JMS 엔진 명령어를 사용한다.

웹 엔진 설정을 변경하는 명령어(JEUS Reference 안내서의 웹 엔진 관련 명령어), EJB 엔진 설정을 변경하는 명령어(JEUS Reference 안내서의 EJB 엔진 관련 명령어), JMS 엔진 설정을 변경하는 명령어(JEUS Reference 안내서의 JMS 엔진 관련 명령어)에 대한 자세한 설명은 관련 안내서를 참고한다.

다음은 콘솔 툴에서 서버를 추가하는 예제이다.

[MASTER]domain1.adminServer>server-info
Information about Domain (domain1)
================================================================================
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| Server |  Status |Node | PID | Clu |   Latest  |  Need  |   Listen  |Running |
|        |         |Name |     |ster |Start Time |   to   |   Ports   |Engines |
|        |         |     |     |     |     /     |Restart |           |        |
|        |         |     |     |     | Shutdown  |        |           |        |
|        |         |     |     |     |   Time    |        |           |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| adminS | RUNNING | nod | 572 | N/A |2024-09-25 | false  | base-0.0. | jms,   |
|erver   |(00:18:2 |e1   |02   |     |(목) 오후   |        |0.0:9736   |web, ejb|
|(*)     |0)       |     |     |     |01:28:24   |        | http-serv |        |
|        |         |     |     |     |KST        |        |er-0.0.0.0 |        |
|        |         |     |     |     |           |        |:8088      |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| server1| RUNNING | nod | 589 | N/A |2024-09-25 | false  | base-0.0. | jms,   |
|        |(00:00:0 |e1   |25   |     |(목) 오후   |        |0.0:9836   |web, ejb|
|        |8)       |     |     |     |01:46:36   |        | http-serv |        |
|        |         |     |     |     |KST        |        |er-0.0.0.0 |        |
|        |         |     |     |     |           |        |:8188      |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
================================================================================


[MASTER]domain1.adminServer>add-server server2 -addr 192.168.15.59 -port 9936 -node node1 -jvm "-Xmx512m -XX:MaxPermSize=128m"
Successfully performed the ADD operation for server (server2).
 NOTICE : base-addr [192.168.15.59] base-port [9936] http-port [8088]
Check the results using "list-servers or add-server".

[MASTER]domain1.adminServer>modify-system-thread-pool server2 -max 200
Successfully performed the MODIFY operation for the system thread pool of the server (server2), but all changes were non-dynamic. They will be applied after restarting.
Check the results using "modify-system-thread-pool server2 or show-system-thread-pool server2".

[MASTER]domain1.adminServer>server-info
Information about Domain (domain1)
================================================================================
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| Server |  Status |Node | PID | Clu |   Latest  |  Need  |   Listen  |Running |
|        |         |Name |     |ster |Start Time |   to   |   Ports   |Engines |
|        |         |     |     |     |     /     |Restart |           |        |
|        |         |     |     |     | Shutdown  |        |           |        |
|        |         |     |     |     |   Time    |        |           |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| adminS | RUNNING | nod | 572 | N/A |2024-09-25 | false  | base-0.0. | jms,   |
|erver   |(00:38:1 |e1   |02   |     |(목) 오후   |        |0.0:9736   |web, ejb|
|(*)     |1)       |     |     |     |01:28:24   |        | http-serv |        |
|        |         |     |     |     |KST        |        |er-0.0.0.0 |        |
|        |         |     |     |     |           |        |:8088      |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| server1| RUNNING | nod | 589 | N/A |2024-09-25 | false  | base-0.0. | jms,   |
|        |(00:19:5 |e1   |25   |     |(목) 오후   |        |0.0:9836   |web, ejb|
|        |9)       |     |     |     |01:46:36   |        | http-serv |        |
|        |         |     |     |     |KST        |        |er-0.0.0.0 |        |
|        |         |     |     |     |           |        |:8188      |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
| server2| SHUTDOWN| nod | N/A | N/A |2024-09-25 | N/A    | N/A       | N/A    |
|        |         |e1   |     |     |(목) 오후   |        |           |        |
|        |         |     |     |     |02:04:50   |        |           |        |
|        |         |     |     |     |KST        |        |           |        |
+--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
===============================================================================

3. 서버 설정

JEUS에서 콘솔 툴을 사용하여 서버 설정을 변경할 수 있다.

3.1. 환경변수 설정

본 절에서는 서버 및 JEUS에서 제공하는 각종 콘솔 툴들이 동작하기 위해 필요한 환경변수에 대하여 설명한다. 환경변수는 콘솔 툴을 통한 설정을 지원하지 않는다.

JEUS가 동작하기 위하여 필요한 환경변수는 설치 시 UNIX 환경인 경우 JEUS_HOME/bin/jeus.properties 파일에 자동적으로 기본값이 설정된다. 해당 파일들은 운영체제 계열에서 제공하는 쉘 스크립트로 작성되어 있으며, 필요한 경우 사용자가 해당 파일을 수정하여 환경변수를 추가하거나 수정할 수 있다.

JEUS에서 사용하는 주요 환경변수에 대한 목록은 다음과 같다.

환경변수 설명

JEUS_HOME

JEUS 설치 디렉터리를 설정한다. (예: /home/jeus)

JEUS_LIBPATH

JEUS 라이브러리 파일 경로를 설정한다. (예: /home/jeus/lib/system)

VM_TYPE

Java HotSpot JVM 사용 유무를 설정한다. (예: hotspot or old)

JEUS_USERNAME

Administrator 계정의 ID를 설정한다.

JEUS_PASSWORD

Administrator 패스워드를 설정한다.

JAVA_HOME

JDK 설치 디렉터리 경로를 설정한다. (예: /usr/jdk17)

JAVA_ARGS

JDK 파라미터를 설정한다.

JAVA_VENDOR

JDK 벤더를 설정한다. (예: Sun, IBM, HP)

jeus.properties에 지정한 환경변수는 해당 스크립트를 참조하여 실행하는 모든 서버 및 툴에 적용된다.

서버별로 환경변수를 다르게 지정하고자 하는 경우에는 다음과 같은 과정을 수행한다.

  1. 다음의 경로에 환경변수 파일 또는 셸 스크립트 파일을 생성한다.

    JEUS_HOME/bin/<DOMAIN_NAME>.<SERVER_NAME>.properties
  2. 생성한 파일(과정 1)을 수정하여 환경변수를 지정한다. 파일을 작성할 때 jeus.properties 또는 jeus.properties.cmd 파일을 참고한다. 환경변수를 지정할 때에는 변수이름 앞 주석처리 부분(#)을 제거하여 사용한다.

    다음은 환경변수 파일의 예이다.

    ###############################################################################
    # This part is for booting JEUS automatically.                                #
    # BE CAREFUL!! THIS IS ONLY FOR TEST AND DEVELOPMENT ENVIRONMENT.             #
    ###############################################################################
    
    # Set up administrator name
    # JEUS_USERNAME=
    
    # Set up administrator password
    # JEUS_PASSWORD=

다음은 서버 기동하는 예제이다.

JEUS_HOME/bin$startMasterServer -server adminServer

3.2. 기본 설정

본 절에서는 기본적인 설정에 대해서 설명한다. 설명하지 않은 설정들에 대해서는 관련 서비스에 대한 안내서를 참고한다.

3.2.1. 기본 설정 동적으로 변경

서버의 기본 설정 중 Class FTP, Use MEJB, Log Stdout To Raw Format은 동적 변경 가능하다. 동적 반영되는 설정은 콘솔 툴에서 help 명령어를 통해 modify-server 명령어를 실행하면 조회할 수 있다. 각 명령어에 대한 자세한 내용은 JEUS Reference 안내서를 참고한다.

콘솔 툴 사용

다음은 콘솔 명령어를 사용하여 동적 변경 가능한 기본 설정을 변경하는 예이다.

[MASTER]domain1.adminServer>modify-server server2
Shows the current configuration.
server (server2)
================================================================================
+-----------------------------------+------------------------------------------+
| Node                              | node1                                    |
| JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
| Action On Resource Leak           | WARNING                                  |
| Stdout to Raw Format              | true                                     |
| MEJB                              | false                                    |
| Class FTP                         | false                                    |
| Server Log Home Directory         | none                                     |
+-----------------------------------+------------------------------------------+
================================================================================

[MASTER]domain1.adminServer>modify-server server2 -logStdoutToRawFormat false -mejb true -classFtp true
Successfully performed the MODIFY operation for server (server2).
Check the results using "list-servers server2 or modify-server server2"

[MASTER]domain1.adminServer>modify-server server2
Shows the current configuration.
server (server2)
================================================================================
+-----------------------------------+------------------------------------------+
| Node                              | node1                                    |
| JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
| Action On Resource Leak           | WARNING                                  |
| Stdout to Raw Format              | false                                    |
| MEJB                              | true                                     |
| Class FTP                         | true                                     |
| Server Log Home Directory         | none                                     |
+-----------------------------------+------------------------------------------+
===============================================================================

3.2.2. Action On Resource Leak 설정

Action On Resource Leak은 서버에서 사용되는 리스소가 닫혔는지 여부를 확인해서 설정한 동작을 수행하고 사용자에게 Resource Leak이 있다는 것을 알려주는 기능이다. 서버에서 이런 역할을 담당하는 것을 Invocation Manager라고 한다.

Invocation Manager는 서버에서 Servlet/JSP, EJB Stateless Session Bean, 그리고 MDB와 같은 Stateless 메소드를 호출하는 동안 사용하는 외부 리소스(external resource)인 JDBC Connection과 WebT Connection을 추적하여 Connection이 닫히지 않은 경우 모드에 따라 사용하는 리소스에 대해 logging을 남기거나 반환하는 작업을 한다. 이 구성요소를 위해 3가지 모드 중 하나를 선택할 수 있다.

모드 설명

NoAction

반환되지 않은 리소스가 있더라도 아무런 동작을 하지 않는다.

Warning

컴포넌트 호출 후에 반환되지 않은 리소스에 대한 로그를 남긴다 (기본값).

추가적으로 SMTP Handler 설정을 통해 이메일 안내를 받도록 할 수 있다.

AutoClose

컴포넌트 호출 후에 반환되지 않은 리소스에 대한 로그를 남기고 이를 닫아준다.

추가적으로 SMTP Handler 설정을 통해 이메일 안내를 받도록 할 수 있다.

다음은 콘솔 툴의 modify-server 명령어를 통해 Action On Resource Leak을 변경하는 예이다.

  1. 서버를 부팅하기 전에 modify-server 명령어를 통해 현재 설정을 변경할 서버의 설정을 조회한다.

    [MASTER]domain1.adminServer>modify-server server2
    Shows the current configuration.
    server (server2)
    ================================================================================
    +-----------------------------------+------------------------------------------+
    | Node                              | node1                                    |
    | JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
    | Action On Resource Leak           | WARNING                                  |
    | Stdout to Raw Format              | false                                    |
    | MEJB                              | true                                     |
    | Class FTP                         | true                                     |
    | Server Log Home Directory         | none                                     |
    +-----------------------------------+------------------------------------------+
    ===============================================================================
  2. server2의 Action On Resource Leak 설정을 AutoClose로 설정한다.

    [MASTER]domain1.adminServer>modify-server server2 -actionOnResourceLeak AutoClose
    Successfully performed the MODIFY operation for server (server2).
    Check the results using "list-servers server2 or modify-server server2".

    동적 반영이 되지 않는 옵션들의 경우는 서버를 부팅하기 전에 변경해야 한다. 운영 중인 서버에 이런 설정을 수정하게 되면 동적으로 반영되지 않기 때문에 서버를 재기동해야 한다.

  3. modify-server 또는 list-servers 명령어를 통해 변경한 설정이 잘 반영되었는지를 확인한다.

    [MASTER]domain1.adminServer>modify-server server2
    Shows the current configuration.
    server (server2)
    ================================================================================
    +-----------------------------------+------------------------------------------+
    | Node                              | node1                                    |
    | JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
    | Action On Resource Leak           | AUTO_CLOSE                               |
    | Stdout to Raw Format              | false                                    |
    | MEJB                              | true                                     |
    | Class FTP                         | true                                     |
    | Server Log Home Directory         | none                                     |
    +-----------------------------------+------------------------------------------+
    ================================================================================
  4. 'server2’의 Action On Resource Leak 설정을 다시 원래 값인 WARNING으로 변경한다.

    이 설정은 서버가 운영 중이기 때문에 설정 변경만 되고 실제로 서버에 적용되지는 않는다. 변경한 설정이 적용되길 원한다면 서버를 재기동해야 한다.

    [MASTER]domain1.adminServer>modify-server server2 -actionOnResourceLeak Warning
    Successfully performed the MODIFY operation for server (server2), but all changes were non-dynamic. They will be applied after restarting.
    Check the results using "list-servers server2 or modify-server server2".
  5. modify-server 또는 list-servers 명령어를 통해 변경한 설정을 확인한다.

    [MASTER]domain1.adminServer>modify-server server2
    Shows the current configuration.
    server (server2)
    ================================================================================
    +-----------------------------------+------------------------------------------+
    | Node                              | node1                                    |
    | JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
    | Action On Resource Leak           | WARNING                                  |
    | Stdout to Raw Format              | false                                    |
    | MEJB                              | true                                     |
    | Class FTP                         | true                                     |
    | Server Log Home Directory         | none                                     |
    +-----------------------------------+------------------------------------------+
    ================================================================================

위에서 사용한 콘솔 툴 명령어에 대한 자세한 설명은 JEUS Reference 안내서의 Server Management 관련 명령어에서 해당 명령어에 대한 내용을 참고한다.

3.2.3. Jvm Config 설정

Jvm Config는 서버를 실행하기 위해 개별적인 JVM에 추가할 파라미터들을 선언하는 데 사용된다. 여기에 설정한 값들을 Launcher 프로세스에서 서버를 시작하기 전에 이 값을 읽어서 서버 JVM을 생성할 때 파라미터로 추가한다. 지정 가능한 JEUS 파라미터들의 목록은 JEUS Reference 안내서의 서버 시스템 프로퍼티를 참고한다. 표준 JVM 파라미터들도 설정 가능하다.

서버에 적용할 JVM 옵션, 시스템 프로퍼티와 더불어 JEUS에서 제공하는 시스템 프로퍼티도 여기에 설정할 수 있다. 주로 JVM 메모리나 옵션들을 설정하는데, 이는 서버의 운영 환경에 맞는 적절한 값을 설정해야 한다. JVM Config 관련 추가적인 설명은 JEUS Domain 안내서의 서버의 JVM 설정변경을 참고한다.

서버가 운영 중일 때는 이 값을 변경해도 반영되지 않는다. 동적 설정 반영의 대상이 아니기 때문에 운영 중인 서버에 이 값을 변경한 경우에는 서버를 재기동해야 적용된다.

콘솔 톨 사용

콘솔 툴의 modify-server, add-jvm-option, modify-jvm-option, remove-jvm-option을 이용하여 서버의 JVM 설정을 변경할 수 있다. 명령에 대한 자세한 설명은 JEUS Domain 안내서의 서버의 JVM 설정변경, JEUS Reference 안내서의 Server Management 관련 명령어를 참고한다.

다음은 콘솔 툴의 modify-server 명령어를 통해 서버의 JVM 설정을 변경하는 예이다.

  1. 서버를 부팅하기 전에 modify-server 명령어를 통해 현재 설정을 변경할 서버의 설정을 조회한다.

    [MASTER]domain1.adminServer>modify-server server1
    Shows the current configuration.
    server (server1)
    =====================================================================
    +---------------------------------------------------------+---------+
    | Node                                                    | node1   |
    | Action On Resource Leak                                 | WARNING |
    | Stdout to Raw Format                                    | true    |
    | MEJB                                                    | false   |
    | Class FTP                                               | false   |
    | Server Log Home Directory                               | none    |
    +---------------------------------------------------------+---------+
    =====================================================================
  2. server1에 JVM 옵션을 추가한다. JVM의 최대 Heap 메모리를 512MB로 설정하고, 최대 Permanent 메모리를 128MB로 설정한다.

    [MASTER]domain1.adminServer>modify-server server1 -jvmOptions "-Xmx512m -XX:MaxPermSize=128m"
    Successfully performed the MODIFY operation for server (server1).
    Check the results using "list-servers server1 or modify-server server1".

    동적 반영이 되지 않는 옵션들의 경우는 서버를 부팅하기 전에 변경해야 한다. 운영 중인 서버의 설정 정보를 변경하면 동적으로 반영되지 않기 때문에 서버를 재기동해야 한다.

  3. modify-server 또는 list-servers 명령어를 통해 변경한 설정의 정상 반영을 확인한다.

    [MASTER]domain1.adminServer>modify-server server1
    Shows the current configuration.
    server (server1)
    ================================================================================
    +-----------------------------------+------------------------------------------+
    | Node                              | node1                                    |
    | JVM Configs                       | -Xmx512m -XX:MaxPermSize=128m            |
    | Action On Resource Leak           | WARNING                                  |
    | Stdout to Raw Format              | true                                     |
    | MEJB                              | false                                    |
    | Class FTP                         | false                                    |
    | Server Log Home Directory         | none                                     |
    +-----------------------------------+------------------------------------------+
    ================================================================================
  4. 'server1’에 JVM 옵션을 추가한다.

    서버에 OutOfMemoryError가 발생한 경우 Heap Dump 파일을 남기는 옵션을 추가하였다. 이 설정은 서버가 운영 중이기 때문에 설정 변경만 되고 실제로 서버에 반영되지는 않는다. 변경한 설정이 반영되길 원한다면 서버를 재기동해야 한다.

    [MASTER]domain1.adminServer>modify-server server1 -jvmOptions "-XX:+HeapDumpOnOutOfMemoryError"
    Successfully performed the MODIFY operation for server (server1).
    Check the results using "list-servers server1 or modify-server server1".
  5. modify-server 또는 list-servers 명령어를 통해 변경한 설정을 확인한다.

    [MASTER]domain1.adminServer>modify-server server1
    Shows the current configuration.
    server (server1)
    ================================================================================
    +---------------------------+--------------------------------------------------+
    | Node                      | node1                                            |
    +---------------------------+--------------------------------------------------+
    | JVM Configs               | -Xmx512m -XX:MaxPermSize=128m,                   |
    |                           |-XX:+HeapDumpOnOutOfMemoryError                   |
    +---------------------------+--------------------------------------------------+
    | Action On Resource Leak   | WARNING                                          |
    +---------------------------+--------------------------------------------------+
    | Stdout to Raw Format      | true                                             |
    +---------------------------+--------------------------------------------------+
    | MEJB                      | false                                            |
    +---------------------------+--------------------------------------------------+
    | Class FTP                 | false                                            |
    +---------------------------+--------------------------------------------------+
    | Server Log Home Directory | none                                             |
    +---------------------------+--------------------------------------------------+
    ================================================================================

3.2.4. 클래스 패스 설정

서버에 클래스 패스를 추가하기 위해서는 domain.xml 설정을 변경해야 한다.

<server>
    ...
    <user-interceptor>
        <jeus-classloader-append-class-path>/home/jeus/lib/mylib.jar</jeus-classloader-append-class-path>
        <jeus-classloader-append-dirs>/home/jeus/lib/append</jeus-classloader-append-dirs>
        <boot-classloader-append-class-path>/home/jeus/boot/classes:/home/jeus/boot/a.jar</boot-classloader-append-class-path>
    </user-interceptor>
</server>

각 설정 항목에 대한 설명은 다음과 같다. 클래스 패스에 추가할 항목이 여러 개인 경우 각 항목은 경로 구분자를 사용하여 구분한다.

항목

설명

jeus-classloader-append-class-path

JEUS 최상위 클래스로더(JEUS Root Classloader)의 클래스 패스에 추가할 항목들을 지정한다.

jeus-classloader-append-dirs

JEUS 최상위 클래스로더(JEUS Root Classloader)의 클래스 패스에 지정한 디렉터리에 속한 모든 클래스 패스 항목들을 추가한다.

boot-classloader-append-class-path

서버 JVM의 시스템 클래스로더 클래스 패스에 추가할 항목들을 지정한다.

3.3. Listener 설정

본 절에서는 서버에서 사용하는 네트워크 Listener 설정에 대해서 설명한다.

네트워크 Listener는 서버에서 수행되는 시스템 서비스들이나 각종 엔진에서 참조하여 그 설정을 사용하기 위한 것이다. 이 Listener는 포트 통합 서비스가 적용되어 있기 때문에 각자 다른 서비스나 엔진에서 하나의 Listener를 공유해서 사용하도록 설정할 수도 있다. 극단적인 예로는 기본 Listener 하나만을 열어두고 모든 서비스를 해당 Listener를 통해서 서비스하는 것도 가능하다.

서버가 운영 중일 때 이 값을 변경하려고 하면 반영되지 않는다. 동적 설정 반영의 대상이 아니기 때문에 운영 중인 서버에 이 값을 변경한 경우에는 서버를 재기동해야 적용된다.

콘솔 툴 사용

jeusadmin에서 add-listener 명령어를 사용하여 기본 Listener를 설정할 수 있다.

[MASTER]domain1.adminServer>add-listener -server server1 -name TestListener -addr 192.168.14.145 -port 8188
Executed successfully, but some configurations were not applied dynamically. It might be necessary to restart the server.
Check the result using 'list-server-listeners -server server1 -name TestListener.

3.4. Thread Pool 설정

본 절에서는 서버에서 사용하는 공용 Thread Pool에 대한 설정을 설명한다.

서버에서 사용되는 서비스들이 전용 Thread Pool을 별도로 설정해서 사용하지 않는다면 모두 이 공용 Thread Pool을 사용한다. 공용 Thread Pool을 사용하는 서비스는 트랜잭션 서비스와 JNDI 서비스, 스케줄러 서비스가 있다. 이 서비스들은 설정에 따라 공용 Thread Pool을 사용할 수도 있고, 전용 Thread Pool을 사용할 수도 있다. 공용 Thread Pool을 사용한다면 서비스에서 사용할 최소 Thread 개수를 미리 할당해 놓을 수 있다.

애플리케이션의 요청을 처리하는 엔진에서는 공용 Thread Pool을 사용하지 않는다. 서비스에서 전용 Thread Pool을 사용하는 방법에 대한 설명은 JNDI Naming Server트랜잭션 매니저JEUS Scheduler 안내서를 참고한다.

콘솔 툴 사용

본 절에서는 콘솔 툴로 공용 Thread Pool을 조회하고 변경하는 예제를 설명한다.

예제에서 사용한 명령어들에 대한 자세한 설명은 JEUS Reference 안내서의 Thread Management 관련 명령어를 참고한다. 서비스들에서 사용하는 Thread Pool에 대한 설정은 각 서비스의 매뉴얼을 참고한다.

다음은 Thread Pool의 max를 100에서 200으로 변경하고 keep alive time을 5분에서 10분으로 변경하는 예제이다.

[MASTER]domain1.adminServer>show-system-thread-pool server1
Shows the current configuration.
the system thread pool of the server (server1)
================================================================================
+---------------------------------------------------------+--------------------+
| Min                                                     | 0                  |
| Max                                                     | 100                |
| Keep-Alive Time                                         | 300000             |
| Queue Size                                              | 4096               |
| Max Stuck Thread Time                                   | 3600000            |
| Action On Stuck Thread                                  | IGNORE_AND_REPLACE |
| Stuck Thread Check Period                               | 300000             |
| Reserved Threads for the Service transaction            | 0                  |
| Reserved Threads for the Service namingserver           | 0                  |
+---------------------------------------------------------+--------------------+
================================================================================

[MASTER]domain1.adminServer>modify-system-thread-pool server1 -max 200 -keep 600000
Successfully performed the MODIFY operation for the system thread pool of the server (server1), but all changes were non-dynamic. They will be applied after restarting.
Check the results using "modify-system-thread-pool server1 or show-system-thread-pool server1".

[MASTER]domain1.adminServer>show-system-thread-pool server1
Shows the current configuration.
the system thread pool of the server (server1)
================================================================================
+---------------------------------------------------------+--------------------+
| Min                                                     | 0                  |
| Max                                                     | 200                |
| Keep-Alive Time                                         | 600000             |
| Queue Size                                              | 4096               |
| Max Stuck Thread Time                                   | 3600000            |
| Action On Stuck Thread                                  | IGNORE_AND_REPLACE |
| Stuck Thread Check Period                               | 300000             |
| Reserved Threads for the Service transaction            | 0                  |
| Reserved Threads for the Service namingserver           | 0                  |
+---------------------------------------------------------+--------------------+
================================================================================

다음은 JNDI 서비스에서 공용 Thread Pool에서 Thread를 미리 할당하도록 설정하는 예제이다.

[MASTER]domain1.adminServer>show-system-thread-pool server1
Shows the current configuration.
the system thread pool of the server (server1)
================================================================================
+---------------------------------------------------------+--------------------+
| Min                                                     | 0                  |
| Max                                                     | 200                |
| Keep-Alive Time                                         | 600000             |
| Queue Size                                              | 4096               |
| Max Stuck Thread Time                                   | 3600000            |
| Action On Stuck Thread                                  | IGNORE_AND_REPLACE |
| Stuck Thread Check Period                               | 300000             |
| Reserved Threads for the Service transaction            | 0                  |
| Reserved Threads for the Service namingserver           | 0                  |
+---------------------------------------------------------+--------------------+
================================================================================

[MASTER]domain1.adminServer>modify-system-thread-pool server1 -service namingserver -r 10
Successfully performed the MODIFY operation for The namingserver thread pool of the server (server1)., but all changes were non-dynamic. They will be applied after restarting.
Check the results using "show-system-thread-pool server1 -service namingserver or modify-system-thread-pool server1 -service namingserver".

[MASTER]domain1.adminServer>show-system-thread-pool server1 -service namingserver
Shows the current configuration.
the system thread pool of the server (server1)
================================================================================
+---------------------------------------------------------+--------------------+
| Min                                                     | 0                  |
| Max                                                     | 200                |
| Keep-Alive Time                                         | 600000             |
| Queue Size                                              | 4096               |
| Max Stuck Thread Time                                   | 3600000            |
| Action On Stuck Thread                                  | IGNORE_AND_REPLACE |
| Stuck Thread Check Period                               | 300000             |
| Reserved Threads for the Service transaction            | 0                  |
| Reserved Threads for the Service namingserver           | 10                 |
+---------------------------------------------------------+--------------------+
================================================================================

[MASTER]domain1.adminServer>modify-system-thread-pool server1 -service namingserver
Shows the current configuration.
The namingserver thread pool of the server (server1).
================================================================================
+----------------------------------------------------------------------+-------+
| Reserved Threads for the Service namingserver                        | 10    |
+----------------------------------------------------------------------+-------+
================================================================================

3.5. Lifecycle Invocation 설정

JEUS에서는 서버의 Lifecycle에 맞게 사용자가 원하는 작업을 할 수 있도록 Lifecycle Invocation 기능을 제공하고 있다. 서버는 부팅, 다운 과정에서 각 단계에 사용자가 설정한 이벤트를 호출해준다.

서버가 운영 중일 때 class name을 변경하려고 하면 반영되지 않는다. class name 은 동적 설정 반영의 대상이 아니기 때문에 운영 중인 서버에 이 값을 변경한 경우에는 서버를 재기동해야 적용된다. 그 외의 Invocation 설정은 동적반영된다.

다음은 Lifecycle Invocation에 등록하는 클래스는 일반 Java 클래스 예제이다. 이 클래스를 jar로 패키징 하여 서버의 Lifecycle에 맞게 호출하고 싶은 대상 서버의 SERVER_HOME/lib/application에 위치시킨다.

Lifecycle Invocation에 등록하는 클래스 : <LifeCycleTester.java>
package lifecycle;

public class LifeCycleTester {
    public void boot() {
        System.out.println("Boot");
        // do somethig
    }

    public void beforeDeploy() {
        System.out.println("Before Deploy");
        // do somethig
    }

    public void afterDeploy() {
        System.out.println("After Deploy");
        // do somethig
    }

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

    public void beforeUndeploy() {
        System.out.println("Before Undeploy");
        // do somethig
    }

    public void afterUndeploy() {
        System.out.println("After Undeploy");
        // do somethig
    }
}
콘솔 툴 사용

콘솔 툴을 사용해서 위에서 만든 예제를 Lifecycle Invocation 클래스로 설정하는 방법에 대해 설명한다.

콘솔 툴에서 add-lifecycle-invocation 명령어를 통해 서버의 Lifecycle Invocation을 추가하고, add-invocation-library 명령어 및 add-invocation 명령어를 통해 Library Ref 및 Invocation을 추가할 수 있다. 이에 대한 자세한 설명은 JEUS Reference 안내서의 add-lifecycle-invocation, add-invocation-library, add-invocation을 참고한다.

[MASTER]domain1.adminServer>add-lifecycle-invocation lifecycle.LifeCycleTester -s adminServer -m boot -type BOOT
Successfully performed the ADD operation for Lifecycle Invocation Class [lifecycle.LifeCycleTester] and Invocation [boot](Invocation ID = 0), but all changes were non-dynamic. They will be applied after restarting.
Check the results using "list-lifecycle-invocations".
[MASTER]domain1.adminServer>list-lifecycle-invocations
List of Lifecycle invocations
================================================================================
+---------------+-------------------------------+-----------------+------------+
|     Target    |   Lifecycle Invocation Class  |    Invocation   | Invocation |
|               |                               |   Library Ref   |            |
+---------------+-------------------------------+-----------------+------------+
| [Server]admin | test.lifecycle.invocation.Lif | lib1            | [1]boot    |
|Server         |eCycleInvocation               |                 |            |
+---------------+-------------------------------+-----------------+------------+
| [Server]admin | lifecycle.LifeCycleTester     |                 | [0]boot    |
|Server         |                               |                 |            |
+---------------+-------------------------------+-----------------+------------+
================================================================================
Use the "lifecycle-invocation-info" command for more information about Lifecycle invocation.

3.6. Resource Reference 설정

서버의 애플리케이션에서 공통으로 사용할 리소스에 대한 매핑 정보를 설정한다.

애플리케이션에서 사용하는 리소스는 해당 애플리케이션이 서비스되는 서버의 JNDI 저장소에 이름이 등록된다. 리소스 매핑을 설정하면 등록되는 이름에 상관없이 애플리케이션에서는 항상 같은 이름의 리소스를 Lookup해서 사용할 수 있다.

서버가 클러스터에 포함되어 있는 경우에는 Resource Reference 설정은 클러스터에 설정된 값이 우선 적용된다.

Resource Reference는 다음과 같이 domain.xml을 편집하여 설정할 수 있다.

<server>
    <name>server1</name>
    ...
    <res-ref>
        <jndi-info>
            <ref-name>/jdbc/DB1</ref-name>
            <export-name>db1</export-name>
        </jndi-info>
    </res-ref>
</server>

4. Server Template 설정

클러스터를 생성할 때에 사용할 서버들의 공통적인 설정들을 서버 템플릿으로 저장해 둘 수 있다. 이를 이용하여 클러스터 생성 시에 공통 설정을 가지는 다수의 서버를 자동으로 생성할 수 있어서 간단하게 서버 클러스터 환경을 구성할 수 있다.

콘솔 툴 사용

콘솔 툴을 이용하여 서버 템플릿을 추가할 수 있다. add-server-template 명령어를 통해 서버 템플릿을 추가하고, 각종 옵션을 주어 세부 항목을 설정한다. add-server-template에 대한 자세한 설명은 JEUS Reference 안내서의 add-server-template을 참고한다.

[MASTER]domain1.adminServer>add-server-template template1 -m true
Successfully performed the ADD operation for server template (template1).
 NOTICE : base-addr [0.0.0.0] base-port [9736] http-port [8088]
Check the results using "list-servers or show-server-template or add-server-template".

[MASTER]domain1.adminServer>show-server-template
Shows the current configuration.
Server template list
=============================================================
+-----------------------------------------------+-----------+
| server templates                              | template1 |
+-----------------------------------------------+-----------+
============================================================