런타임 엔진 설치 및 제거

본 장에서는 ProObject 런타임 서버를 설치하고 제거하는 방법에 대해서 설명한다.

1. 개요

런타임 엔진을 설치할 때에는 아래와 같은 리소스들을 설치가 필요하다.

  • 런타임 엔진 바이너리(Runtime Engine Binary)

    ProObject 가 수행되기 위한 기본적인 바이너리와 라이브러리가 포함된 파일들을 이르는 말로, WAS(Web Application Server)에서 수행될 수 있도록 WAR(Web Application Resource) 형태로 배포된다.

  • 런타임 서버 리소스(ProObject Server Resource)

    ProObject가 WAR에 배포되어 수행될 때 이용할 기본적인 서버 설정들과 사용자 애플리케이션들의 리소스를 의미한다.

위의 리소스들은 자동 설치나 수동 설치를 통해 설치를 진행할 수 있으며 원하는 방향에 맞게 설치를 진행하면 된다. 설치가 완료된 이후는 정상적으로 설치되었는지 설치 확인 을 통해 설치 결과를 검증하도록 한다.

자동 설치를 할 수 없는 환경이거나, 수동으로 설치를 진행하기를 원하는 경우에는 아래의 절차에 따라 설치를 진행하도록 한다.

ProObject 런타임 서버의 수동 설치는 다음과 같은 과정으로 진행하면 된다.

  1. 런타임 엔진 바이너리 배포

    ProObject의 런타임 엔진을 기동하기 위해서는 런타임 엔진 바이너리를 JEUS에 배포하여 이용한다. 런타임 엔진 바이너리를 배포하는 방법에 대하여는 "JEUS Applications & Deployment 안내서"를 참고한다.

  2. 런타임 서버 리소스 배포 (설치 참고)

  3. 런타임 서버 설정 (환경설정 참고)

  4. ProObject 기동 확인 (설치 확인 참고)

2. 설치

ProObject 의 런타임 엔진 바이너리가 WAS에 정상적으로 배포되어 기동할 준비를 마쳤다면 런타임 서버 리소스들을 배포해야 한다.

  1. ProObject의 기본 디렉터리는 아래와 같다.

    ${PROOBJECT_HOME}
        |--config
        |--application
        |--logs
            |--application
                  |--{APPLICATION}
                           |--{SERVICE_GROUP}
            |--Monitoring
        |--system
        |--temp
    ${PROOBJECT_HOME}

    ProObject 의 최상위 디렉터리로 실제 디렉터리 이름과 위치는 설치할 때 결정된다.

    config

    ProObject 의 가장 기본적인 설정 파일들을 담고 있으며, 부팅, 기동에 필요한 여러 설정 파일들이 담겨 있다.

    다음은 필요한 파일에 대한 설명이다.

    파일 설명

    proobject.xml

    현재 서버에서 기동할 ProObject 런타임 엔진의 설정들이 기술된 설정 파일이다.

    파일에 기술된 설정들은 런타임 엔진을 초기화할 때 고정적으로 사용할 변수들이 지정되며, 설치가 이루어질 때 외에는 별달리 수정할 필요는 없다.

    파일의 설정이 정상적으로 되어 있지 않은 경우에는 런타임 엔진의 기동이 실패할 수 있다. 해당 설정 정보에 대한 자세한 내용은 런타임 엔진 설정을 참고한다.

    system.properties

    ProObject 런타임을 수행하는 서버에 대한 설정들이 기술된 설정 파일이다. ProObject Manager(이하 ProManager)를 이용해서 서버의 설정을 변경할 수 있다.

    application

    ProStudio를 통해 개발된 애플리케이션이 ProManager를 통해 배포되는 디렉터리로, ProObject에서 사용할 애플리케이션들이 배포되는 디렉터리이다. 해당 폴더에 애플리케이션이 배포되어야 런타임에서 서비스를 제공할 수 있다.

    logs

    ProObject 의 수행 중 오류 및 수행 정보들을 기록하는 로그 파일들이 담기는 디렉터리로 시스템 로그와 애플리케이션 로그로 분류된다. {LOG_HOME}은 로그가 쌓이는 디렉터리의 최상위 디렉터리로, ProObject 런타임 엔진의 시스템 로그가 저장된다.

    다음은 해당 경로에 저장되는 로그에 대한 설명이다.

    파일 설명

    ProObjet.log

    런타임 엔진에서 작성하는 모든 로그들이 기록된다.

    ChannelEventManager.log

    네트워크 I/O 또는 IPC를 처리하는 채널 이벤트 핸들러와 이를 관리하던 도중에 발생하는 로그들이 기록된다.

    EventManager.log

    이벤트 계층(Event Layer)에서 채널 이외의 경우에 발생되는 로그들이 기록된다.

    NodeAddressManager.log

    remote_servicegroup.xml과 remote.address.properties 등을 통해 외부 연동을 기술한 경우 연동에 관련된 로그들이 기록된다.

    Monitoring.log

    모니터링 기능을 활성화한 경우 모니터링과 관련된 로그들이 기록된다.

    다음은 하위 디렉터리에 대한 설명이다.

    • logs/application

      애플리케이션별로 기록되는 로그 파일들이 저장된다. 디렉터리 내부에서는 {APPLICATION_NAME}.log의 이름으로 로그가 생성된다.

      하위 디렉터리 설명

      {APPLICATION}

      애플리케이션에 속한 서비스그룹별로 기록되는 로그들이 생성되는 디렉터리이다. 디렉터리 내부에서는 {SERVICEGROUP_NAME}.log의 이름으로 서비스 그룹별 로그가 생성된다.

      {APPLICATION}/{SERVICE_GROUP}

      서비스 그룹에 속한 서비스 별로 기록되는 로그들이 생성되는 디렉터리이다. 디렉터리 내부에서는 {SERVIC_NAME}.log의 이름으로 서비스별 로그가 생성된다.

    • logs/Monitoring

      런타임 엔진의 모니터링과 관련된 로그들이 생성되는 디렉터리이다.

    system

    ProObject의 시스템 라이브러리나 패치 파일들이 위치한다.

    기본적으로 DevOps와 관련된 라이브러리가 설치되거나, 런타임 엔진의 패치를 제공하기 위해 사용한다. DevOps와 관련된 설치 내용은 설치, 런타임 엔진의 패치는 패치를 참고한다.

    temp

    ProObject 런타임 엔진에 파일 업로드를 포함한 임시 파일들이 저장되는 공간이다. 별도로 사용되지 않으며 런타임 엔진이 기동 중이 아닐 경우에는 안의 디렉터리들을 지워도 무방하다.

  2. 압축을 해제해서 ProObject 디렉터리 구조를 생성했다면 ProObject의 Home 디렉터리를 환경변수로 설정해야 한다.

    환경변수는 시스템 환경변수와 JVM 환경변수를 모두 지원한다. 두 환경변수가 모두 설정된 경우에는 JVM 환경변수가 우선시되어 설정된다.

    • OS 환경변수를 이용할 경우 Linux를 기준으로 다음과 같이 ProObject Home을 설정할 수 있다.

      PROOBJECT_HOME = 사용자 지정 디렉터리
      export PROOBJECT_HOME

      설정을 변경한 다음에는 .proifle 또는 .bash_profile을 입력하여 설정한 내용을 반영시켜야 한다.

    • JVM 옵션을 설정하려면 WAS 서버가 기동될 때 다음과 같이 ProObject Home을 설정할 수 있다.

      -DPROOBJECT_HOME = 사용자 지정 디렉터리
  3. ProObject의 바이너리 복사와 ProObject Home 경로가 설정되었다면, ProObject의 환경을 설정해주어야 한다. 각 옵션에 대한 자세한 설명은 런타임 엔진 설정을 참고한다.

3. 환경설정

본 절에서는 ProObject 기동에 필요한 설정들에 대하여 기술한다. 해당 설정들이 제대로 되어 있지 않은 경우에는 ProObject가 정상적으로 부팅될 수 없음을 유의하도록 한다.

3.1. 기본 설정

ProObject 엔진의 가장 기본적인 설정은 다음의 파일에 한다.

${PROOBJECT_HOME}/config/proobject.xml

최상위 요소로는 <ProObjectConfig>에 설정한다.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<ProObjectConfig>
   <!--ProObject 기본 설정들-->
   <application-path>${PROOBJECT_HOME}/application</application-path>
   <locale></locale>
   <adaptive-port>false</adaptive-port>
   <proobject-port>6776</proobject-port>
   <engine-config>
       <!--ProObject 런타임 엔진 설정 -->
        :
       중략
        :
    </engine-config>
    <schedule-config>
       <!--ProObject 스케줄링 엔진 설정 -->
          :
         중략
          :
     </schedule-config>
     <batch-config>
        <!--ProObject 일괄처리 설정 -->
           :
          중략
           :
     </batch-config>
</ProObjectConfig>
항목 설명

<application-path>

런타임 서버가 인식하는 애플리케이션의 디렉터리 위치를 변경할 경우에 사용한다. 설정값은 애플리케이션들을 배포하고자 하는 유효한 디렉터리를 설정한다.

JVM 환경변수가 설정된 경우 이 설정이 우선시된다(JVM 환경변수는 -DPROOBJECT_APPLICATON_HOME으로 설정할 수 있다).

(기본값: ${PROOBJECT_HOME}/application)

<locale>

런타임 엔진의 기본 언어 정보를 설정한다. 설정에 따라 런타임 엔진의 로그/오류 등의 메시지 언어를 변경할 수 있다.

(기본값: EN, 현재 설정값은 EN(영어)만 설정 가능)

<server-name>

런타임 엔진의 서버 이름을 설정한다.

JVM 환경변수가 설정된 경우 이 설정이 우선시된다(JVM 환경변수는 -DPROOBJECT_SERVER_NAME으로 설정할 수 있다).

<engine-config>

런타임 엔진에서 사용할 각종 설정들을 설정한다. 자세한 내용은 런타임 엔진 설정을 참고한다.

<adaptive-port>

런타임 엔진이 부팅되며 서버 포트를 바인딩에 실패한 경우 자동으로 가용할 포트를 찾아 바인딩을 시도할지 설정한다.

해당 옵션이 비활성화되어 있을 때 바인딩에 실패하면 서버 기동이 실패한다. (기본값: false)

<proobject-port>

런타임 엔진 간의 통신할 때 사용할 기본 TCP 포트를 설정한다.

(기본값: 6776)

<proobject-channel-config>

ProObject 간의 통신에 사용되는 채널에 대한 설정을 설정한다. 자세한 내용은 채널 환경설정을 참고한다.

<file-port>

런타임 엔진이 TCP 를 통해 파일 송/수신을 처리할 경우 사용할 TCP 포트를 설정한다. (기본값: 4444)

<engine-config>

ProObject 런타임 기동 및 여러 부가적인 처리를 위해 엔진에서 필요한 여러 설정들을 설정한다. 자세한 내용은 런타임 엔진 설정을 참고한다.

<schedule-config>

ProObject의 스케줄링에 관련된 여러 설정들을 설정한다. 해당 설정에 대한 자세한 내용은 ProObject 런타임 엔진 개발자 안내서의 스케줄러 서비스 개발을 참고한다.

<batch-config>

ProObject의 일괄처리에 관련된 여러 설정들을 설정한다. 해당 설정에 대한 자세한 내용은 ProObject 런타임 엔진 개발자 안내서의 배치 서비스 개발을 참고한다.

3.1.1. 런타임 엔진 설정

런타임이 기동하거나 부가 기능들을 처리함에 있어 공통적으로 필요한 정보들을 설정한다. 해당 설정은<ProObjectConfig><engine-config>에 설정한다.

<ProObjectConfig>
        :
   <engine-config>
      <listener-name>listener_name</listener-name>
      <host-name>host_name</host-name>
      <proObject-datasource>datasource_name</proObject-datasource>
      <initial-context-factory>class_name</initial-context-factory>
      <provider-url>server_address</provider-url>
      <transaction-manager-factory-class>class_name</transaction-manager-factory-class>
   </engine-config>
</ProObjectConfig>
항목 설명

<listener-name>

Node.JAVA를 사용하는 경우 사용할 Node.JAVA 스레드를 지니는 웹 커넥션 이름을 설정한다.

JEUS의 리스너 이름이 아니라 웹 커넥션 이름을 설정해야 한다. 설정이 잘못된 경우 부팅이 되지 않으므로 주의한다.

<proObject-datasource>

ProObject 런타임 엔진이 기본적으로 사용하는 데이터소스의 이름을 설정한다. 런타임 설정 및 여러 기본 정보들을 불러오는데 사용되며, dbio_config에 설정된 alias의 이름을 설정한다.

<service-alias-datasource>

ProObject에서 서비스의 별명을 설정한 데이터소스의 이름이다.

dbio_config에 지정된 alias의 이름을 설정한다.

<initial-context-factory>

ProObject에서 JNDI Lookup하는 경우 사용할 ContextFactory의 클래스 이름을 설정한다.

별도의 설정이 없을 경우 ProObject Pub/Sub과 데이터소스 등의 Lookup을 시도하는 가장 기본적인 ContextFactory이므로 Pub/Sub이나 DB I/O가 있는 경우에는 반드시 설정해주어야 한다.

기본값은 JEUS로 설정되며, jeus.jndi.JEUSContextFactory으로 지정된다.

<provider-url>

ProObject의 JNDI Lookup하는 경우 접속할 서버의 주소를 설정한다.

설정하지 않을 경우 현재 서버를 사용한다.

<transaction-manager-factory-class>

ProObject의 트랜잭션을 관리하는 TransactionManager가 사용할 TransactionFactory 클래스를 설정한다.

(기본값: com.tmax.proobject.engine.transaction.JeusTransactionManagerFactory)

다음은 기본적으로 배포되는 proobject.xml의 런타임 엔진 설정 예제이다.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<ProObjectConfig>
   <locale>en</locale>
   <server-name>ProObject7</server-name>
   <engine-config>
      <listener-name>http</listener-name>
      <host-name>KuiperUbuntu</host-name>
      <proObject-datasource>tibero6</proObject-datasource>
      <initial-context-factory>jeus.jndi.JEUSContextFactory</initial-context-factory>
      <provider-url>localhost:19736</provider-url>
   </engine-config>
</ProObjectConfig>

3.1.2. 채널 환경설정

ProObject에서 사용하는 연결들에 대해 설정한다.

<ProObjectConfig>
        :

</ProObjectConfig>
항목 설명

<on-close-service>

ProObject 간의 통신 중 연결이 끊어진 경우 호출되는 서비스를 설정한다. 서비스의 입력은 다음과 같은 데이터 오브젝트로 제한되며, 출력은 무시된다.

  • 입력 : com.tmax.proobject.engine.event.channel.eventhandler.proobject.dto.ProObjectChannelCloseInfo

    • remoteIp : 연결이 끊어진 상대방의 IP이다.

    • remotePort : 연결이 끊어진 상대방의 Port이다.

    • localIp : 연결이 끊어진 자신의 IP이다.

    • localPort : 연결이 끊어진 자신의 Port이다.

    • serverName : 연결이 끊어진 서버의 이름이다.

    • exception : 연결이 끊어질 때 발생한 예외 객체이다.

3.2. 런타임 서버 설정

본 절에서는 서버별로 설정하는 각종 설정에 대하여 설명한다.

해당 설정들이 제대로 되어 있지 않은 경우에는 ProObject에서 원하는 동작들이 정상적으로 수행되지 않으므로 유의하도록 한다. ProObject 엔진의 가장 기본적인 설정은 다음이 경로 파일에 Key-Value 방식을 이용해 설정한다.

${PROOBJECT_HOME}/config/system.properties

3.2.1. 서버 설정

서버의 가장 기본적인 설정들을 설정한다.

SYSTEM_CHARSET = charset_code
SYSTEM_REPLACE_CHARSET_WITH_REQUEST = [true|false]
SYSTEM_GLOBAL_DEPLOY_VERSION = deploy_version
항목 설명

SYSTEM_CHARSET

서버에서 사용할 기본 인코딩을 설정한다. (기본값: UTF-8)

SYSTEM_REPLACE_CHARSET_WITH_REQUEST

서버 내부 동작은 기본 charset으로 동작하면서 응답을 줄 때만 request에 설정된 charset으로 전환할지 여부를 설정한다. (기본값: false)

SYSTEM_GLOBAL_DEPLOY_VERSION

서버의 전역 배포 버전을 설정한다. 특별한 경우 외에는 설정하지 않는 것을 권장한다. (기본값: 0)

3.2.2. 웹 관련 설정

서버의 웹과 관련된 기본적인 설정들을 설정한다.

SYSTEM_WEB_ALLOW_HEADER = header1,header2,header3....
SYSTEM_WEB_ALLOW_ORIGIN = [true|false]
SYSTEM_WEB_RESPONSE_EXCEPTION_STACKTRACE_EXCLUDE = [true|false]
SYSTEM_WEB_PARAMETER_CHARSET = charset_code
SYSTEM_WEB_DOWNLOAD_FILE_SIZE_LIMIT = file_size_limit_value
SYSTEM_WEB_READ_BUFFER_SIZE = read_buffer_size
SYSTEM_WEB_WRITE_BUFFER_SIZE = write_buffer_size
SYSTEM_WEBSOCKET_TEXT_BUFFER_SIZE = buffer_size
SYSTEM_WEBSOCKET_BINARY_BUFFER_SIZE = buffer_size
SYSTEM_HTTP_CORS_DISABLE = [true|false]
SYSTEM_PROOBJECT_SESSION_NULL_ENABLE = [true|false]
SYSTEM_WEB_RESTRICTED_HTTP_METHOD = http_method:http_method:....
항목 설명

SYSTEM_WEB_ALLOW_HEADER

런타임 엔진이 HTTP 에서 허용할 헤더의 종류를 설정한다.

별도로 지정하지 않는 경우지정되지 않은 헤더가 포함된 서비스는 요청이 거절된다.

여러 개의 헤더를 설정하려면 콤마(,)로 구분하여 설정한다.

(기본값: origin, x-requested-with, content-type, accept, ProObjectWebFileTransfer)

SYSTEM_WEB_ALLOW_ORIGIN

웹 브라우저를 통해 요청을 전달한 경우 요청을 허용할 주소를 설정한다. 주소가 잘못된 경우 웹 브라우저가 요청을 전달하는 것을 거부할 수 있다. (기본값: false, 범위: true | false)

SYSTEM_WEB_RESPONSE_EXCEPTION_STACKTRACE_EXCLUDE

런타임 엔진이 웹을 통해 요청을 받은 서비스를 처리를 하던 중 오류가 발생했을 때 오류 스택을 함께 전달할지 여부를 설정한다.

  • true : 오류가 발생했을 때 오류 스택을 함께 전달하지 않는다.

  • false : 오류가 발생했을 때 오류 스택을 함께 전달한다. (기본값)

SYSTEM_WEB_PARAMETER_CHARSET

인코딩 정보를 설정한다. (기본값: ISO-8859-1)

GET으로 데이터를 실어서 오거나 쿼리 스트링으로 추가적인 정보를 보내는 경우 해당 정보들의 문자열 셋 정보를 설정한다.

웹 표준 상으로 ISO-8859-1로 지정하도록 정해져있으므로, ISO-8859-1로 들어와 ProObject의 기본 인코딩으로 전환된다. WAS에서 별도의 설정으로 쿼리 스트링의 인코딩을 변경했다면, 그에 맞춰 인코딩을 변경해주어야 한다.

SYSTEM_WEB_DOWNLOAD_FILE_SIZE_LIMIT

웹을 통해 파일을 다운로드하는 경우 다운로드를 허용할 파일의 최대 크기를 원하는 크기를 KB 단위로 설정한다.

(기본값: 1024 (1MB))

SYSTEM_WEB_READ_BUFFER_SIZE

HTTP를 통해 요청을 받았을 때 Body를 읽을 때 사용하는 버퍼의 크기를 설정한다. (기본값: 16384, 16KB)

SYSTEM_WEB_WRITE_BUFFER_SIZE

HTTP를 통해 응답을 전달할 때 Body를 전송할 때 사용할 버퍼의 크기를 설정한다. (기본값: 16384, 16KB)

SYSTEM_WEBSOCKET_TEXT_BUFFER_SIZE

웹 소켓을 통해 텍스트 데이터를 송신할 때 사용할 버퍼의 크기를 설정한다. (기본값: 8192, 8KB)

SYSTEM_WEBSOCKET_BINARY_BUFFER_SIZE

웹 소켓을 통해 이진 데이터를 송신할 때 사용할 버퍼의 크기를 설정한다. (기본값: 8192, 8KB)

SYSTEM_HTTP_CORS_DISABLE

Cross-Domain과 관련된 설정을 자동으로 할지 여부를 설정한다. (기본값: false, 범위: true | false)

SYSTEM_PROOBJECT_SESSION_NULL_ENABLE

전달되는 SessionID가 NULL인 경우 Session의 생성 여부를 설정한다. (기본값: false, 범위: true | false)

SYSTEM_WEB_RESTRICTED_HTTP_METHOD

제한하고 싶은 HTTP 메소드의 이름들을 지정한다. 메소드의 이름은 콜론(:) 을 통해 구분한다.

이 때 POST, GET, PUT, DELETE를 제외한 메소드는 PO가 지원하지 않으므로 설정해도 영향을 받지 않는다.

3.2.3. 로그 설정

다음은 서버의 로그 관련 설정 항목에 대한 설명이다.

SYSTEM_LOG_HOME = log_home_path
SYSTEM_LOG_LEVEL = [SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST]
SYSTEM_LOG_CONSOLE_HANDLER_ENABLE = [TRUE|FALSE]
SYSTEM_LOG_FILEHANDLER_STORE = [AGGREGATE|SEPERATE]

SYSTEM_{MODULE}_LOG_LEVEL = [SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST]
SYSTEM_{MODULE}_LOG_ENCODING = log_encoding_code
SYSTEM_{MODULE}_LOG_ASYNCHANDLER_BUFFER_SIZE = buffer_size
SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL_TYPE = [NONE|DAY|HOUR]
SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL = log_filehandler_interval
SYSTEM_{MODULE}_LOG_FILEHANDLER_LIMIT = log_filehandler_limit

설정항목 중 {MODULE} 항목은 런타임 엔진의 주요 모듈들을 의미하며, 각 모듈의 로그들을 일괄적으로 설정할 수 있다. 각 모듈을 설정할 때에는 다음 중에서 지정해야 한다.

  • PROOBJECT : 최상위 모듈로 런타임 엔진의 모든 로그를 기록한다.

  • CHANNELEVENTMANAGER : 채널 이벤트 계층을 관장하는 모듈로 채널과 관련된 로그를 기록한다.

  • EVENTMANAGER : 이벤트 계층을 관장하는 모듈로 이벤트와 관련된 로그를 기록한다.

항목 설명

SYSTEM_LOG_HOME

런타임 서버의 로그가 생성되는 위치를 설정한다.

(기본값: ${PROOBJECT_HOME}/logs/)

SYSTEM_LOG_LEVEL

서버의 기본 로그 레벨을 설정한다.

  • SEVERE

  • WARNING

  • INFO (기본값)

  • CONFIG

  • FINE

  • FINER

  • FINEST

SYSTEM_LOG_CONSOLE_HANDLER_ENABLE

런타임 서버의 로그에 콘솔 핸들러(Console Handler)의 추가 여부를 설정한다. (기본값: false)

SYSTEM_LOG_FILEHANDLER_STORE

런타임 서버의 로그를 기록하는 방식을 설정한다.

  • AGGREGATE : 모든 스레드들의 로그들이 이벤트 스레드에서 모이며, 이벤트 스레드는 비동기식 파일 기록 스레드로 로그를 전달하여 로그를 기록한다. (기본값)

  • SEPERATE : 로그를 남기는 모든 스레드가 개별적으로 로그를 기록한다.

SYSTEM_{MODULE}_LOG_LEVEL

서버의 모듈별 시스템 로그 레벨을 설정한다(SYSTEM_LOG_LEVEL과 동일). 별도의 설정이 없을 경우에는 SYSTEM_LOG_LEVEL의 설정을 따른다.

SYSTEM_{MODULE}_LOG_ENCODING

서버의 모듈별 인코딩을 설정한다. (기본값: UTF-8)

SYSTEM_{MODULE}_LOG_ASYNCHANDLER_BUFFER_SIZE

서버의 모듈별 로그 버퍼의 크기를 설정한다. (기본값: 4096)

너무 크게 설정하는 경우에는 메모리를 낭비할 가능성이 높으며, 너무 작게 설정하면 성능이 떨어질 수 있으므로 주의하여 설정하도록 한다. 단, 설정은 반드시 2의 지수의 값들 중 하나로 설정해야 한다.

SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL_TYPE

서버의 모듈별 로그가 파일에 로그를 기록하는 경우 어떤 주기로 파일을 변경할지를 설정한다.

  • NONE : 로그 파일을 변경하지 않는다.

  • DAY : 정해진 날짜 주기마다 로그 파일을 변경한다. (기본값)

  • HOUR : 00시를 기준으로 정해진 시간 주기마다 로그 파일을 변경한다. 예를 들어 SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL을 6으로 지정한 경우 6시, 12시, 18시, 24시에 파일이 변경된다.

SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL

서버의 모듈별 로그가 파일에 로그를 기록하는 경우 파일 변경 주기 타입에서 설정한 단위로 얼마나 지나야 파일을 변경할지를 양의 정수로 설정한다.

이때 파일 변경 주기 타입은 SYSTEM_{MODULE}_LOG_FILEHANDLER_INTERVAL_TYPE의 값을 따른다.

(기본값: 1, 하루마다 로그 파일이 따로 작성되도록 되어 있다.)

SYSTEM_{MODULE}_LOG_FILEHANDLER_LIMIT

서버의 모듈별 로그가 파일에 로그를 기록하는 경우 로그 파일을 변경할 때 크기의 제한을 설정한다. 지정한 크기에 근접하는 경우 파일을 변경한다. (기본값: -1)

아래의 타입들 중 동작을 원하는 형태로 값을 지정하여 사용한다.

  • 음수 : 파일의 크기를 바탕으로 로그를 나누지 않는다.

  • 양수 : 설정한 값의 KB 단위로 파일이 분할된다.

3.2.4. 서비스 설정

서버의 로그 관련 설정에 대해 설명한다.

SYSTEM_TIMEOUT = timeout_value
SYSTEM_APPLICATION = application_name1:application_name2.....
SYSTEM_SERVICENAME_CASE = [CAMEL|NATIVE|LOWER|UPPER]
항목 설명

SYSTEM_TIMEOUT

서버에 배포된 모든 서비스들에 대한 기본 타임아웃 시간을 밀리초(ms) 단위로 설정한다. (기본값: 60000 (60s, 1분))

아래의 타입들 중 동작을 원하는 형태로 값을 지정하여 사용한다.

  • 음수 : 타임아웃이 발생하지 않는다.

  • 양수 : 설정한 값의 ms 단위로 타임아웃 시간이 설정된다.

SYSTEM_APPLICATION

ProObject에서 수행시킬 애플리케이션의 이름을 설정한다.

여러 애플리케이션을 수행시키려면 콤마(,)를 구분자로 사용하며, 단일 애플리케이션 옵션이 활성화된 경우에는 최초에 등장한 애플리케이션만 수행된다.

  • 다음은 test 애플리케이션 하나만을 실행하는 경우의 예이다.

    SYSTEM_APPLICATION = test

    다음은 test, test2 애플리케이션을 배포하는 경우의 예이다.

    SYSTEM_APPLICATION = test,test2

SYSTEM_SERVICENAME_CASE

서비스 이름을 인식하는 방법을 설정한다.

다음 중에서 설정한다.

  • CAMEL : 가장 앞의 문자를 대문자로 인식하며, 언더바(_)가 있는 경우 언더바가 서비스 이름에서 제외하고 바로 뒤의 영문자를 대문자로 인식한다. (기본값)

  • NATIVE : 서비스의 이름을 변형하지 않고 전달된 그대로 인식한다.

  • LOWER : 서비스의 이름을 항상 소문자로 인식한다.

  • UPPER : 서비스의 이름을 항상 대문자로 인식한다.

해당 설정을 지정한 경우 원하는 형태로 서비스의 이름이 변형되어 서버가 인식되므로 주의하도록 한다.

3.2.5. 데이터 오브젝트 설정

데이터 오브젝트의 동작과 관련된 설정들로 해당 항목의 설정들은 ProObject 런타임 엔진 개발자 안내서의 데이터 오브젝트/데이터 오브젝트 팩토리 개발을 참고한다.

3.2.6. 헬스 체크 설정

연결된 서버들의 alive 여부를 검사하는 헬스 체크관련 설정을 설정한다.

SYSTEM_PROOBJECT_HEALTH_CHECK_ENABLE = [true|false]
항목 설명

SYSTEM_PROOBJECT_HEALTH_CHECK_ENABLE

연결된 모든 ProObject 서버들의 alive 여부를 검사하기 위한 Heart-Beat 메시지를 송신할지 여부를 설정한다.

해당 옵션이 설정된 후에는 1분에 한 번씩 서비스의 요청을 전달하게 된다.

3.3. 런타임 환경변수 설정

런타임 엔진을 기동할 때에 JVM 옵션을 통해 런타임 엔진의 환경변수를 설정이 가능하다.

항목 설명

PROOBJECT_HOME

ProObject 런타임 서버 리소스의 위치를 설정한다.

PROOBJECT_LOG_HOME

ProObject 런타임 서버의 로그가 쌓이는 디렉터리를 설정한다.

(기본값: {PROOBJECT_HOME}/logs)

PROOBJECT_SERVER_NAME

ProObject의 서버 이름을 설정한다. proobject.xml에 설정하길 원치 않는 경우에 유효한 옵션이다.

4. 설치 확인

ProObject 런타임 바이너리가 배포된 WAS에 서비스를 호출하여 설치가 정상적으로 이루어졌는지를 확인한다. 출력 내용과 ${PROOBJECT_HOME}/logs/ProObject.log를 확인하여 정상적으로 기동되었는지 확인할 수 있다.

웹에서 ProObject가 설치된 서버의 IP:Port로 웹으로 요청을 보내 다음과 같은 메시지를 받았다면 정상적으로 ProObject가 기동된 것이다.

figure1 7
ProObject 기동 확인

5. 제거

설치된 ProObject를 제거하기 위해서는 런타임 엔진 바이너리와 서버 리소스를 모두 제거해주어야 한다.

  • 런타임 엔진 바이너리

    WAS에서 배포해제(Undeploy)를 통해 제거가 가능하다.

  • 서버 리소스

    ${PROOBJECT_HOME} 디렉터리를 제거하기만 하면 되나, 애플리케이션이나 로그의 위치 등을 변경한 경우에는 해당 디렉터리도 함께 제거하도록 한다.

6. 패치

필요한 경우에는 설치된 ProObject 런타임 엔진에 패치가 이루어질 수 있다. 기본적으로는 기본 제공되는 WAR 파일을 WAS에 재배포하여 패치를 처리할 수도 있으나, ProObject에는 기존의 바이너리를 변경하지 않고 패치를 적용하는 방법을 제공하고 있다.

런타임 엔진은 ${PROOBJECT_HOME}/system/patch 디렉터리 하위에 패치 파일들을 배포해서 패치를 적용한다. 패치 파일을 배포하면 런타임 엔진이 자동으로 패치 파일들을 먼저 불러들여 런타임 엔진을 기동된다.

${PROOBJECT_HOME}
    |--system
        |--patch