시스템 설정

본 장에서는 JEUS의 환경설정 및 기동 방법에 대한 기본적인 내용을 설명한다.

1. 개요

Jeusadmin을 사용해서 시스템을 구성하는 방법은 다음의 순서로 설명한다.

2. 기본 환경설정

JEUS Jeusadmin 콘솔 통해 JEUS의 모든 요소를 관리할 수 있는 서비스를 제공한다. 사용자는 쉽게 JEUS에 접근하여 시스템 설정과 모니터링 및 애플리케이션을 관리할 수 있다.

다음 순서에 따라 Jeusadmin을 실행한다.

  1. startMasterServer 커맨드 실행하여 JEUS MASTER를 실행한다.

    다음은 JEUS MASTER를 실행하는 예제이다.

    [was@localhost bin]$ startMasterServer -u administrator -p <password>
    **************************************************************
      - JEUS Home         : /home/jeus
    - Added Java Option : -Djeus.io.buffer.size-per-pool=81920 -Djeus.cdi.enabled=false -Djeus.jms.server.manager.produce-wait-strategy-type=blocking -Djeus.servlet.sortWebinfLibraries=name_asc
    ***************************************************************
    
    =============== JEUS LICENSE INFORMATION ================
    == VERSION : JEUS 9 Fix#0 (9.0.0.0-b15)
    == EDITION: Enterprise (Trial License)
    == NOTICE: This license restricts the number of allowed clients.
    == Max. Number of Clients: 5
    ==========================================================
    [2024.09.25 17:54:09][1] [launcher-1] [Config-0153] DomainConfigServiceProvider is jeus.service.descriptor.JEUSDomainDescriptorFile.
    This license is not appropriate for product runtime mode. Replace the license with an appropriate one.
    [2024.09.25 17:54:10][1] [launcher-1] [Config-0157] SecurityDomainsConfigServiceProvider is jeus.service.descriptor.SecurityDomainsDescriptorFile.
    [2024.09.25 17:54:10][2] [launcher-1] [Launcher-0012] Starting the server [server1] with the command
     /home/jdk-17.0.2/bin/java -Dserver1 -Xms1024m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Djeus.io.buffer.size-per-pool=81920 -Djeus.cdi.enabled=false -Djeus.jms.server.manager.produce-wait-strategy-type=blocking -Djeus.servlet.sortWebinfLibraries=name_asc -server -Xbootclasspath/p:/home/jeus/lib/system/extension.jar -classpath /home/jeus/lib/system/bootstrap.jar -Djava.security.policy=/home/jeus/domains/jeus_domain/config/security/policy -Djava.library.path=/home/jeus/lib/system:/home/webtob5004_B231_0_38//lib:/home/webtob5004_B231_0_38//lib:/home/webtob5004_B231_0_38//lib: -Djava.endorsed.dirs=/home/jeus/lib/endorsed -Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net -Djava.util.logging.config.file=/home/jeus/bin/logging.properties -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.util.logging.manager=jeus.util.logging.JeusLogManager -Djeus.home=/home/jeus -Djava.net.preferIPv4Stack=true -Djeus.tm.checkReg=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Djeus.domain.name=jeus_domain -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url -Djeus.server.protectmode=false -Dis.jeus.master=true -Dsun.net.http.errorstream.enableBuffering=true -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/home/jeus/domains/jeus_domain/servers/server1/logs/jvm.log jeus.server.admin.MasterServerBootstrapper -domain jeus_domain -u administrator -verbose -server server1 .
    [2024.09.25 17:54:10][2] [launcher-1] [Launcher-0014] The server[server1] is being started ...
    [2024.09.25 17:54:10][1] [server1-1] [Config-0153] DomainConfigServiceProvider is jeus.service.descriptor.JEUSDomainDescriptorFile.
    [2024.09.25 17:54:10][1] [server1-1] [Config-0157] SecurityDomainsConfigServiceProvider is jeus.service.descriptor.SecurityDomainsDescriptorFile.
    [2024.09.25 17:54:12][2] [server1-1] [SERVER-0248] The JEUS server is STARTING.
    [2024.09.25 17:54:12][0] [server1-1] [SERVER-0000] Version information - JEUS 9 Fix#0 (9.0.0.0-b15).
    
    ... 중략
    
    [2024.09.25 17:54:29][2] [launcher-13] [Launcher-0034] The server[server1] initialization completed successfully[pid : 473].
    [2024.09.25 17:54:29][0] [launcher-1] [Launcher-0040] Successfully started the server[server1]. The server state is now RUNNING..

startMasterServer 스크립트는 JEUS_HOME/bin/ 디렉터리에 위치하며 시스템 경로(path)에 설정되어 있어야 한다.

3. Managed Server(MS)의 추가와 설정

MS는 실제 애플리케이션을 서비스하기 위한 엔진들과 여러 서비스들을 관장하는 서버 인스턴스를 의미한다. MS는 도메인에 여러 개 존재할 수 있다. MS의 주요 역할은 사용자가 deploy하는 애플리케이션을 서비스하고, 애플리케이션이 필요로 하는 리소스나 서비스를 제공하는 것이다.

Managed Server 추가

다음은 새로운 MS를 추가하고, 추가된 MS에 리스너를 추가하는 방법이다.

  1. jeusadmin 접속하여 add-server 명령어를 통해 MS를 추가한다.

    [MASTER]jeus_domain.server1>add-server server2
    Successfully performed the ADD operation for server (server2).
     NOTICE : base-addr [0.0.0.0] base-port [9736] http-port [8088]
    Check the results using "list-servers or add-server".

    MS를 기동하려면 'BASE’라는 리스너를 이용하는데, 기본값이 '9736’으로 설정된다. 이는 MASTER와 값이 동일하여 정상적으로 기동되지 않을 수 있으므로 변경해야 한다.

  2. MS 추가가 완료되면 server-info 명령어를 통해 동적 설정으로 MS가 생성된 것을 확인할 수 있다.

    Information about Domain (jeus_domain)
    ================================================================================
    +--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
    | Server |  Status |Node | PID | Clu |   Latest  |  Need  |   Listen  |Running |
    |        |         |Name |     |ster |Start Time |   to   |   Ports   |Engines |
    |        |         |     |     |     |     /     |Restart |           |        |
    |        |         |     |     |     | Shutdown  |        |           |        |
    |        |         |     |     |     |   Time    |        |           |        |
    +--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
    | adminS | RUNNING | N/A | 291 | N/A |2024-09-24 | false  | base-0.0. | jms,   |
    |erver   |(00:38:2 |     |34   |     |(화) 오후  |        |0.0:9736   |web, ejb|
    |(*)     |7)       |     |     |     |03:06:43   |        | http-serv |        |
    |        |         |     |     |     |KST        |        |er-0.0.0.0 |        |
    |        |         |     |     |     |           |        |:8808      |        |
    +--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
    | server2| SHUTDOWN| N/A | N/A | N/A |2024-09-24 | N/A    | N/A       | N/A    |
    |        |         |     |     |     |(화) 오후  |        |           |        |
    |        |         |     |     |     |03:06:43   |        |           |        |
    |        |         |     |     |     |KST        |        |           |        |
    +--------+---------+-----+-----+-----+-----------+--------+-----------+--------+
    ================================================================================
  3. list-server-listener 명령어를 통해 설정한 Listener 확인이 가능하다.

    [MASTER]jeus_domain.server1>list-server-listeners -server server2
    =========================================================
    +--------------------------------------+---------+------+
    |             listener-name            | address | port |
    +--------------------------------------+---------+------+
    | base                                 | 0.0.0.0 | 9736 |
    | http-server                          | 0.0.0.0 | 8088 |
    +--------------------------------------+---------+------+
    =========================================================
  4. modify-listener 명령어를 통해 Listener 관련 수정을 진행할 수 있다.

    [MASTER]jeus_domain.server1>modify-listener -server server2 -name base -port 9512
    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 server2 -name base.
    
    [MASTER]jeus_domain.server1>list-server-listeners -server server2
    =========================================================
    +--------------------------------------+---------+------+
    |             listener-name            | address | port |
    +--------------------------------------+---------+------+
    | base                                 | 0.0.0.0 | 9512 |
    | http-server                          | 0.0.0.0 | 8088 |
    +--------------------------------------+---------+------+
    =========================================================
HTTP 리스너 및 커넥터 설정

새로 추가된 MS를 구동하기 위한 설정은 기본 설정으로 충분하며, 추가로 HTTP 리스너 추가하여 웹 엔진을 이용한 서비스하기 위해서는 리스너 및 커넥터 설정을 추가적으로 진행해야 한다.

  1. jeusadmin 접속하여 add-listener 명령어를 사용하여 리스너를 추가할 수 있다.

    [MASTER]jeus_domain.server1>help add-listener
    NAMES
        add-listener
            Adds a new server listener with the given properties.
    ALIAS
        addlistener, createlistener
    USAGE
        add-listener -server <server-name>
                     -name <listener-name>
                     [-addr <address>]
                     -port <port>
                     [-selectors <selectors>]
                     [-dual]
                     [-backlog <backlog>]
                     [-timeout <read-timeout>]
                     [-keepaliveTimeout <keepalive-timeout>]
                     [-rt,--reservedthreads <reserved-threads>]
                     [-f,--forceLock]
    ...(생략)
    
    [MASTER]jeus_domain.server1>add-listener -server server2 -name testListener -port 8777
    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 server2 -name testListener.

    다른 리스너에서 사용하는 Port와 중복되지 않도록 설정한다.

  2. add-http-listener 명령어를 사용하여 Web Connection을 추가한다.

    [MASTER]jeus_domain.server1>help add-http-listener
    NAMES
        add-http-listener
            Add HTTP listener.
    ALIAS
        addhttpl
    USAGE
        add-http-listener [-cluster <cluster-name> | -server <server-name>]
                          [-f,--forceLock]
                          -name <web-connection-name>
                          -tmin <minimum-thread-num>
                          [-tmax <maximum-thread-num>]
                          [-tidle <max-idle-time>]
                          [-qs <max-queue-size>]
                          -slref <server-listener-ref-name>
                          [-http2]
    ...(생략)
    
    [MASTER]jeus_domain.server1>add-http-listener -server server2 -name testHttpListener -tmin 10 -tmax 20 -slref testListener
    Successfully changed only the XML.
    Restart the server to apply the changes.
    For detailed web connection information, use the 'show-web-engine-configuration -cn' command.
  3. show-web-engine-configuration 명령어를 통해 등록된 정보를 확인한다.

4. 데이터소스 추가

데이터소스(Datasource)는 데이터베이스와 Jakarta EE 프로그램을 연결하기 위해 사용된다.

예제에서는 JEUS에 기본적으로 포함되어 있는 Apache Derby 데이터베이스를 사용한다. Apache Derby는 JEUS_HOME\derby에 포함되어 있다. 만약 Derby가 실행되어 있지 않다면 다음과 같이 실행한다.

UNIX/Linux의 명령 프롬프트에서 다음과 같이 실행한다.

JEUS_HOME\bin> startderby

추후에 Derby를 종료하기 위해서는 다음과 같이 실행한다.

JEUS_HOME\bin> stopderby

Derby를 JEUS에서 사용하려면 Derby의 JDBC 드라이버 파일인 derbyclient.jar가 JEUS_HOME\lib\datasource에 위치해야 한다(기본적으로 포함되어 있다). Derby에 대한 자세한 내용은 http://db.apache.org/derby/를 참고한다.

예제에서는 sample이라는 데이터베이스를 jdbc/sample이라는 데이터소스 이름으로 사용한다.

다음은 콘솔 툴을 사용하여 데이터소스를 추가하는 방법에 대한 설명이다.

  1. jeusadmin으로 JEUS에 접속한다.

    jeusadmin –u jeus –p <password>
  2. 데이터소스를 MASTER에 추가한다.

    [MASTER]jeus9.server1>add-data-source -id datasource1 -en jdbc/sample -dscn org.apache.derby.jdbc.ClientConnectionPoolDataSource -dst ConnectionPoolDataSource -vendor others -sn localhost -pn 1527 -dn sample -user app -pw app -prop "ConnectionAttributes:java.lang.String=;create=true"
    Successfully performed the ADD operation for data source [datasource1] to domain.
    Check the results using "add-data-source".
  3. 데이터소스를 MS(server2)에 추가한다.

    [MASTER]jeus9.server1>add-data-sources-to-server -server server2 -ids datasource1
    Successfully performed the ADD operation for data sources to the server [server2].
    Check the results using "add-data-sources-to-server -server server2".

5. 서버 기동 및 종료

JEUS에서 MS는 JEUS_HOME/bin에 있는 startManagedServer 스크립트로 기동할 수 있고, stopServer 스크립트로 종료할 수 있다.

  1. startManagedServer 스크립트를 사용하여 추가한 MS 기동한다.

    [was@localhost bin]$ startManagedServer -u administrator -p <password> -server server2
    +++**************************************************************
      - JEUS Home         : /home/jeus
    - Added Java Option : -Djeus.io.buffer.size-per-pool=81920 -Djeus.cdi.enabled=false -Djeus.jms.server.manager.produce-wait-strategy-type=blocking -Djeus.servlet.sortWebinfLibraries=name_asc
    ***************************************************************+++
    
    =============== JEUS LICENSE INFORMATION ================
    == VERSION : JEUS 9 Fix#0 (9.0.0.0-b15)
    == EDITION: Enterprise (Trial License)
    == NOTICE: This license restricts the number of allowed clients.
    == Max. Number of Clients: 5
    ==========================================================
    [2023.04.25 18:00:05][2] [launcher-1] [SERVER-0201] Successfully connected to the JEUS Master Server(localhost:9736).
    ... 중략
    [2024.09.25 18:00:10][0] [launcher-1] [Launcher-0040] Successfully started the server[server2]. The server state is now RUNNING.
  2. stopServer 스크립트를 사용하여 기동한 MS를 종료한다.

    [was@localhost bin]$ stopServer -u administrator -p <password> -server server2
    Attempting to connect to 127.0.0.1:9736.
    The connection has been established to JEUS Master Server [server1] in the domain [jeus_domain].
    Stop server message to server [server2] was successfully sent.