환경설정

본 장에서는 WebT와 JTmax를 기동하기 전에 필수적으로 진행해야 할 환경설정 방법에 대해 설명한다.

1. WebT 환경설정(JEUS6)

JEUS에서 WebT를 기동하기 위해서는 JEUSMain.xml나 webt.properties 파일 중에 하나를 설정한다.

1.1. JEUSMain.xml 설정

JEUS에서 WebT를 기동하기 위해 JEUSMain.xml에 <external-source>로 WebTConnectionPool의 환경 정보를 등록한다. WebTConnectionPool을 설정하려면 JEUSMain.xml 파일의 <external-resource> 태그 안에 다음과 같이 정의한다.

<resource>
    ...
        <external-resource>
            <property>
                <key>header-type</key>
                <value>extendedV4</value>
            </property>
            <property>
                <key>log-file-name</key>
                <value>d:\\webt.log</value>
            </property>
            <property>
                <key>log-level</key>
                <value>debug</value>
            </property>
            <property>
                <key>log-valid-day</key>
                <value>1</value>
            </property>
            <property>
                <key>monitor-interval</key>
                <value>30000</value>
            </property>
            <property>
                <key>check-alive</key>
                <value>true</value>
            </property>
            <property>
                <key>enable-failback</key>
                <value>false</value>
            </property>
            <property>
                <key>enable-autoclose</key>
                <value>true</value>
            </property>
            <property-group>
                <name-prefix>tmax2</name-prefix>
                <property>
                    <key>type</key>
                    <value>shared</value>
                </property>
                <property>
                    <key>host-name</key>
                    <value>192.168.1.123</value>
                </property>
                <property>
                    <key>host-port</key>
                    <value>8888</value>
                </property>
                <property>
                    <key>min</key>
                    <value>10</value>
                </property>
                <property>
                    <key>max</key>
                    <value>20</value>
                </property>
                <property>
                    <key>step</key>
                    <value>2</value>
                </property>
                <property>
                    <key>check-acquired</key>
                    <value>true</value>
                </property>
                <property>
                    <key>support-xa</key>
                    <value>true</value>
                </property>
                <property>
                    <key>enable-autoclose</key>
                    <value>true</value>
                </property>
                <property>
                    <key>mbean</key>
                    <value>true</value>
                </property>
            </property-group>
            <property-group>
                <name-prefix>tmaxc</name-prefix>
                <property>
                    <key>type</key>
                    <value>clustered</value>
                </property>
                <property>
                    <key>connect-timeout</key>
                    <value>60</value>
                </property>
            </property-group>
            <name>webt</name>
            <class-name>tmax.webt.external.WebtResource</class-name>
        </external-resource>
    ...
</resource>

JEUSMain.xml의 <resource> 태그 안에 정의한 경우에는 JEUS 매니저가 기동했을 때 이 커넥션 그룹이 등록된다. 특정 컨테이너를 설정한 <engine-container> 태그 아래에 정의했을 경우에는 해당 컨테이너가 기동되었을 때에 등록된다.

같은 이름으로 여러 곳에 등록한 경우에는 나중에 등록된 커넥션 그룹의 설정이 이전에 등록된 커넥션 그룹의 설정을 덮어쓰게 되므로, 같은 이름으로 중복해서 등록하지 않도록 주의한다.

다음은 JEUSMain.xml를 설정할 때 사용하는 <external-resource> 하위 태그에 대한 설명이다.

  • <property>

    모든 WebTConnectionPool에 적용할 속성을 정의한다. Sub 태그로 다음과 같이 <key>와 <value>가 있고 그에 대한 자세한 설명은 <property-group>/<property> 속성을 참고한다.

    태그 설명

    <key>

    WebTConnectionPool에 적용할 속성의 이름을 정의한다.

    <value>

    정의한 속성에 대해 적용 가능한 값을 설정한다.

  • <property-group>

    하나의 WebTConnectionPool에 적용할 속성을 정의한다. <property-group> 하나를 정의할 때마다 WebTConnectionPool 하나가 생성된다. <property-group>을 여러 번 정의하여 다수의 WebTConnectionPool을 생성할 수 있다.

    태그 설명

    <name-prefix>

    애플리케이션 프로그램에서 접근하게 될 컨텍스트의 이름을 정의한다.

  • <name>

    원하는 WebTConnectionPool의 이름을 설정한다. 단, <resource> 태그 내부에서 고유한 이름으로 정의한다.

  • <class-name>

    WebTConnectionPool을 사용하기 위해서는 WebTConnectionPool에서 사용하는 클래스명을 반드시 정의해야 한다.

<property-group>/<property> 속성

<property>와 <property-group> 내부에 <key>, <value> 태그를 사용해서 WebTConnectionPool에 적용할 속성과 적용 가능한 값을 설정한다. <key> 태그에는 속성 이름, <value> 태그에는 적용 가능한 값을 설정한다.

다음은 <key> 태그에 설정 가능한 속성명과 그에 따라 <value> 태그에 설정 가능한 값에 대한 설명이다.

<key> 속성 구분 <value> 설명

log-file-name

설정값

String

기본값

NULL

설명

로그 파일의 상대 경로 혹은 절대 경로를 지정한다. 상대 경로를 지정할 경우 $JEUS_HOME/logs 디렉터리 밑에 로그 파일이 생성되며 이 값을 지정하지 않는 경우 STDOUT으로 로그가 출력된다. OS가 Windows인 경우에는 경로 구분자를 '\'가 아닌 '\\'로 해야 한다.

log-level

설정값

none | debug | info

기본값

info

설명

로그 레벨을 지정한다.

  • none : 값을 출력하지 않는다.

  • debug : request msg, reply msg, xa msg 등 debug 관련 내용을 출력한다.

  • info : request msg, reply msg를 출력한다.

log-file-format

설정값

String

기본값

MMddyyyy

설명

log-valid-day가 1 이상일 경우 생성되는 로그 파일명의 형식을 지정한다.

log-buffer-size

설정값

int

기본값

512

설명

로그를 남길 때 사용되는 버퍼의 크기를 지정한다.

log-valid-day

설정값

int

기본값

-1

설명

로그 파일을 사용하는 경우 로그 파일명의 갱신 주기를 설정한다.

0이나 음수를 지정하는 경우 하나의 파일을 사용한다.

type

설정값

shared | clustered

기본값

shared

설명

WebTConnectionPool의 타입을 지정한다.

  • shared : 일반적인 경우이다.

  • clustered : WebTDataSource의 클러스터링을 사용할 경우이다. tmax-delegation-source와 connection-timeout을 <property>로 갖는다.

connection-timeout의 경우, clustered로 지정된 커넥션 그룹의 설정값이 해당 cluster에 포함된 커넥션 그룹(shared type)의 설정값보다 우선시 된다.

tmax-delegation-source

설정값

String

기본값

NULL

설명

type을 clustered로 설정한 경우 클러스터링에 참여하는 WebTDataSource들의 JNDI명의 리스트를 콤마(,)로 구분하여 지정한다.

host-name

설정값

String

기본값

NULL

설명

type을 shared로 설정한 경우 Tmax 서버의 IP 주소를 지정한다. host-port가 -1일경우 $TMAXDIR/host-name으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다.

host-port

설정값

int

기본값

-1

설명

type을 shared로 설정한 경우 Tmax 서버의 TCP 포트를 지정한다.

support-xa가 TRUE일 경우에는 반드시 JAVAGW의 포트를 지정해야 한다.

-1일 경우 $TMAXDIR/host-name으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다.

backup-host-name

설정값

String

기본값

NULL

설명

type이 shared이고 백업 서버를 사용하는 경우 백업 Tmax 서버의 IP 주소를 지정한다. backup-port가 -1일경우 $TMAXDIR/backup-host-name으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다.

backup-port

설정값

int

기본값

-1

설명

type이 shared이고 백업 서버를 사용하는 경우 백업 Tmax 서버의 TCP 포트를 지정한다. backup-port가 -1일경우$TMAXDIR/backup-host-name으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다.

default-charset

설정값

String

기본값

사용 중인 JDK의 기본값

설명

Tmax 버퍼의 내용에 적용되는 Character Set의 이름을 지정한다.

fdl-file

설정값

String

기본값

NULL

설명

Tmax FDL 버퍼를 사용하기 위한 필드 테이블의 경로를 지정한다.

encryption

설정값

Boolean

기본값

FALSE

설명

Tmax와의 통신에서 암호화 기능의 사용 여부를 설정한다.

user-name

설정값

String

기본값

NULL

설명

사용자 보안 인증을 위한 사용자명을 설정한다.

user-password

설정값

String

기본값

NULL

설명

사용자 보안 인증을 위한 사용자 암호를 설정한다.

domain-name

설정값

String

기본값

NULL

설명

도메인 보안 인증을 위한 도메인명을 설정한다.

domain-password

설정값

String

기본값

NULL

설명

도메인 보안 인증을 위한 도메인의 암호를 설정한다.

min

설정값

int

기본값

2

설명

WebTConnectionPool의 기본 커넥션의 수를 설정한다.

max

설정값

int

기본값

30

설명

WebTConnectionPool의 최대 커넥션의 수를 설정한다.

step

설정값

int

기본값

4

설명

WebTConnectionPool이 부족해서 커넥션을 더 생성할 때 생성할 커넥션의 개수를 설정한다.

period

설정값

int

기본값

3600000 (단위: Milisecond)

설명

커넥션을 제거할 기준시간을 설정한다. WebTConnectionPool에서 커넥션의 개수가 min에 설정된 개수보다 클 경우 period에 설정된 시간 동안 사용되지 않은 커넥션을 WebTConnectionPool에서 제거한다.

fair-provision

설정값

Boolean

기본값

TRUE

설명

WebTConnectionPool에서 커넥션을 획득하는 정책을 결정한다.

  • TRUE : 사용하지 않은 커넥션을 가져온다.

  • FALSE : 최근에 사용했던 커넥션을 가져온다.

check-acquired

설정값

Boolean

기본값

FALSE

설명

WebTConnectionPool에서 획득한 커넥션의 liveness 체크를 할 것인지를 설정한다. WebTDataSource에서 getConnection을 실행했을 때 실제 서버로 애플리케이션 ping 체크를 할 것인지를 설정한다.

  • TRUE : liveness 체크를 한다.

  • FALSE : liveness 체크를 하지 않는다.

enable-autoclose

설정값

Boolean

기본값

FALSE

설명

사용 후 반납되지 않은 커넥션을 자동으로 WebTConnectionPool에 반환한다. Java Servlet과 JSP에서만 유효하다.

connect-timeout

설정값

int

기본값

20 (단위: 초)

설명

WebTDataSource에서 커넥션을 가져올 때 사용되는 타임아웃 시간이다. 설정된 시간 내에 커넥션을 얻거나 새로 생성하지 못하면 예외상황을 반환한다. 만일, clustered type으로 선언된 그룹에 이 옵션을 지정할 경우에는 이 그룹에 속한 모든 WebTDataSrouce들의 connect-timeout시간이 지정한 옵션값으로 동일하게 적용된다.

support-xa

설정값

Boolean

기본값

TRUE

설명

XA 트랜잭션 서비스를 사용할 것인지를 결정한다. XA 트랜잭션을 사용하는 경우 RQ나 대화형 서비스의 사용은 제한된다. 커넥션의 메인 주소 및 백업 주소는 반드시 JAVAGW의 주소를 사용해야 한다.

service-timeout

설정값

int

기본값

-1

설명

서비스를 요청할 때 service-timeout에 지정된 시간 동안 응답이 없는 경우 예외상황을 반환한다. 트랜잭션 시작 후 서비스를 호출하는 경우에는 service-timeout 대신 transaction-block-timeout 을 타임아웃 시간으로 적용한다.

transaction-timeout

설정값

int

기본값

-1

설명

트랜잭션을 사용하는 경우 transaction-timeout에 지정된 시간 동안 처리되지 않은 트랜잭션을 Rollback 처리한다.

transaction-block-timeout

설정값

int

기본값

60

설명

트랜잭션의 commit이나 rollback을 요청할 때 transaction-block-timeout에 지정된 시간 동안 응답이 없는 경우 예외상황을 반환한다. 트랜잭션 시작 후 서비스를 호출하는 경우에는 service-timeout 대신 transaction-block-timeout 을 타임아웃 시간으로 적용한다.

enable-event

설정값

Boolean

기본값

FALSE

설명

이벤트 사용 여부를 결정한다.

enable-flag

설정값

all | broadcast | sendtocli | notify | acall | none

기본값

none

설명

사용할 이벤트를 설정한다.

  • all : 모든 이벤트를 사용한다.

  • broadcast : broadcast 타입 이벤트를 사용한다.

  • sendtocli : sendtocli 타입 이벤트를 사용한다.

  • notify : notify 타입 이벤트를 사용한다.

  • acall : acall 타입 이벤트를 사용한다.

  • none : 이벤트를 사용하지 않는다.

2 종류 이상의 Value를 동시에 설정할 때는 콤마(,)로 구분한다.

(예: broadcast,notify)

event-handler

설정값

String(클래스이름)

기본값

NULL

설명

이벤트를 수신할 때 호출되는 인터페이스를 구현한 객체의 이름을 설정한다.

header-type

설정값

default | extendedV4

기본값

default

설명

Tmax와 통신할 때의 프로토콜 타입을 결정한다.

  • default : Tmax 3.x에서 사용하는 프로토콜이다.

  • extendedV4 : Tmax 4.x 이상 버전에서 사용하는 프로토콜이다. Tmax 4.x 이상 버전은 하위 프로토콜을 지원하므로 default로 설정해도 호환된다. 단, Tmax 4.x와 encryption기능을 사용할 경우 default를 사용할 수 없으므로 반드시 extendedV4로 설정해야 한다.

monitor-interval

설정값

int

기본값

60000 (단위: Millisecond)

설명

WebtDatasource의 상태를 점검하는 주기를 설정한다. failback과 liveness체크의 주기로 사용된다. 최소 주기는 5초이다.

check-alive

설정값

Boolean

기본값

FALSE

설명

liveness 체크를 수행할지를 설정한다. 주기적으로 상태 점검시 실제로 메시지 전송을 통해 연결 상태를 체크한다. 주기는 monitor-interval을 통해서 설정된다.

  • TRUE : liveness 체크를 한다.

  • FALSE : liveness 체크를 하지 않는다.

enable-failback

설정값

Boolean

기본값

FALSE

설명

monitor-interval에 설정한 주기대로 메인 서버가 정상동작하는지 확인한 후, 메인 서버의 문제가 해결된 경우 백업 주소를 지정한 WebTDataSource가 다시 메인 서버의 서비스를 이용할지를 지정한다.

mbean

설정값

Boolean

기본값

FALSE

설명

WebT Admin을 위한 MBean을 등록할 것인지 여부를 지정한다. WebT Admin 기능은 JEUS 6 Fix#7 이상에서 지원한다.

1.2. webt.properties 설정

JEUS에서 WebT를 기동하기 위해 필요한 환경설정은 WebT의 환경설정 파일인 webt.properties를 설정하는 것으로도 가능하다. webt.properties 파일을 사용해 WebT에서 제공하는 라이브러리로 구현된 클라이언트 프로그램을 구동할 때 환경설정을 초기화한다. 또한 애플리케이션 프로그램을 초기화할 때 WebTSystem API를 사용하는 대신 webt.properties 파일에서 설정할 수 있다.

JEUS6 이하 JEUSMain.xml에 다음과 같이 설정한다.

<engine-container>
         <name>container1</name>
         <id>60</id>
         <base-port>11351</base-port>
         <command-option>-Xms256m -Xmx512m -Dwebt.properties=/home/tmax1/
webt/properties/common.properties</command-option>
         ...
</engine-container>

JEUS_HOME/lib/application 안에 webt.proterties를 두면 JEUS를 부팅할 때 자동으로 환경을 읽어오지만 JEUS_HOME/lib/application/webt.properties와 JEUSMain.xml에서 동시에 webt.properties를 설정하면 문제가 발생할수 있으므로 주의해야 한다.

JEUSMain.xml에 [-D] 옵션으로 JEUS를 기동할 때 webt.properties의 환경을 설정할수 있으며, JEUS_HOME/lib/application 이외의 폴더에 설정하여 사용하는것을 권장한다. 이 경우에 webt.properties로 지정된 커넥션 그룹의 설정은 [-D] 옵션으로 정의된 해당 컨테이너에서만 사용할 수 있다.

webt.properties 파일에는 다음의 값들을 설정할 수 있다. 시간값은 초 단위로 설정된다.

#######################################
# logging related parameters.
#######################################
log.level=none | info | debug | dev

# printed to standard out
log.dir=log.dir

# set the name of the log file. default is webt.log
log.file=webt.log

# set log buffering size. default is 0
log.bufsize=numer
log.file.date.format=MMddyyyy
log.valid.days=numer


#######################################
# FDL related parameters
#######################################
fdl.file=fdl.file

# Tmax headerType
headerType=default|extendedV4

# monioring related parameters
monitoring.pool.failback=true|false
monitoring.pool.checkAlive=true|false
monitoring.pool.interval=number

enableFastBackup=true|false
enableJavaSocketKeepAlive=true|false
useRollingDown=true|false

jeus.servlet.webt.autoClose.enable=true|false


#######################################
# connection pool realted paramters
#######################################
enableConnectionPool=true|false

connectionPool.groups=connectionPool name
connectionPool.<groupName>.connectTimeou=number
connectionPool.<groupName>.cluster=group name

connectionPool.<groupName>.hostAddr=hostAddr
connectionPool.<groupName>.hostPort=hostPort
connectionPool.<groupName>.hostBackupAddr=hostBackupAddr
connectionPool.<groupName>.hostBackupPort=hostBackupPort

connectionPool.<groupName>.encryption=true|false
connectionPool.<groupName>.check=true|false
connectionPool.<groupName>.userName=userName
connectionPool.<groupName>.userPasswd=userPasswd
connectionPool.<groupName>.domainName=domainName
connectionPool.<groupName>.domainPasswd=domainPasswd

connectionPool.<groupName>.fair.provision=true|false
connectionPool.<groupName>.initCapacity=number
connectionPool.<groupName>.maxCapacity=number
connectionPool.<groupName>.maxIdleTime=number

connectionPool.<groupName>.tpTimeout=number
connectionPool.<groupName>.txTimeout=number
connectionPool.<groupName>.txBlockTimeout=number
connectionPool.<groupName>.header.type=default | extendedV4
connectionPool.<groupName>.eventSvcType=all | broadcast | sendtocli | notify | acall
connectionPool.<groupName>.eventHandler=shared | clustered

tmax.webt.xid.log=true | false
webt.mbean=true | false

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

  • log.level = none | debug | info

    • 기본값 : info

    • 로그 레벨을 지정한다.

      설정값 설명

      none

      값을 출력하지 않는다.

      info

      request msg , reply msg를 출력한다.

      debug

      request msg, reply msg, xa msg 등 내용을 출력한다.

      dev

      request msg, reply msg, xa msg, data dump 등 내용을 출력한다.

  • log.dir = String

    • 기본값 : NULL

    • WebT 로그 파일의 저장되는 디렉터리 경로를 설정한다. OS가 Windows인 경우에는 경로 구분자를 '\'가 아닌 '\\'로 해야 한다.

  • log.file = String

    • 기본값 : webt.log

    • WebT 로그 파일명을 지정한다.

  • log.bufsize = int

    • 기본값 : 512

    • 로그를 남길 때 사용되는 버퍼의 크기를 지정한다.

  • log.file.date.format = String

    • 기본값 : MMddyyyy

    • log.valid.days가 1 이상일 경우 생성되는 로그 파일명의 형식을 지정한다.

  • log.valid.days = int

    • 기본값 : -1

    • 로그 파일을 사용하는 경우 로그 파일명의 갱신 주기를 설정한다. 0이나 음수를 지정하는 경우 하나의 파일을 사용한다.

  • fdl.file = String

    • 기본값 : NULL

    • Tmax FDL 버퍼를 사용하기 위한 필드 테이블의 경로를 지정한다.

  • headerType = default | extendedV4

    • 기본값 : default

    • Tmax와 통신할 때의 프로토콜 타입을 결정한다. 사용자가 직접 생성한 커넥션 및 커넥션 그룹에 적용되는 프로토콜 타입이다.

      설정값 설명

      default

      Tmax 3.x에서 사용하는 프로토콜이다.

      extendedV4

      Tmax 4.x 이상 버전에서 사용하는 프로토콜이다. Tmax 4.x 이상 버전은 하위 프로토콜을 지원하므로 default로 설정해도 호환된다.

  • monitoring.pool.failback = Boolean

    • 기본값 : FALSE

    • monitoring.pool.interval에 설정한 주기대로 메인 서버가 정상동작하는지 확인한 후, 백업 주소를 지정했을 때 메인 서버의 문제가 해결된 경우 다시 메인 서버의 서비스를 이용할지를 지정한다.

      설정값 설명

      TRUE

      메인 서버의 서비스를 이용한다.

      FALSE

      메인 서버의 서비스를 이용하지 않는다.

  • monitoring.pool.checkAlive = Boolean

    • 기본값 : FALSE

    • group 에 설정된 pool 의 liveness 체크를 통해 커넥션의 상태 점검을 할 것인지 설정한다. 주기적으로 커넥션의 상태 점검 할 경우 Tmax의 연결 여부를 실제 메시지 전송을 통해 확인한다. 주기는 monitoring.pool.interval에 의해 결정된다.

      설정값 설명

      TRUE

      liveness 체크를 실행한다.

      FALSE

      liveness 체크를 실행하지 않는다.

  • monitoring.pool.interval = int

    • 기본값 : 60 (단위: 초)

    • 커넥션의 상태 점검 주기를 설정한다. failback의 결정시점과 checkAlive의 주기에 사용된다. 최소 주기는 5초이다.

  • enableFastBackup = Boolean

    • 기본값 : FALSE

    • 타임아웃이 발생하는 소켓을 삭제하는 기능의 사용 여부를 설정한다.

      설정값 설명

      TRUE

      타임아웃이 발생하는 소켓을 삭제한다.

      FALSE

      타임아웃이 발생하는 소켓을 삭제하지 않는다.

  • enableJavaSocketKeepAlive = Boolean

    • 기본값 : FALSE

    • 데이터의 전송이 중지된 경우 커넥션의 상태를 확인하는 옵션의 사용 여부를 설정한다. 에플리케이션 레벨에서 체크하는 것이 아니라, 연결된 소켓의 KEEPALIVE옵션을 활성화시켜 Tmax와 연결된 Socket의 상태를 TCP 프로토콜에 의해서 체크하는 기능이다.

      설정값 설명

      TRUE

      커넥션의 상태를 확인한다.

      FALSE

      커넥션의 상태를 확인하지 않는다.

  • useRollingDown = Boolean

    • 기본값 : FALSE

    • Rolling Down 사용 여부를 결정한다.

      설정값 설명

      TRUE

      Rolling Down을 사용한다.

      FALSE

      Rolling Down을 사용하지 않는다.

  • jeus.servlet.webt.autoClose.enable = Boolean

    • 기본값 : FALSE

    • 사용 후 반납되지 않은 커넥션을 자동으로 WebTConnectionPool에 반환하는 기능의 사용 여부를 결정한다.

      설정값 설명

      TRUE

      커넥션을 자동으로 반납하는 기능을 사용한다.

      FALSE

      커넥션을 자동으로 반납하는 기능을 사용하지 않는다.

  • enableConnectionPool = Boolean

    • 기본값 : FALSE

    • WebTConnectionPool의 사용 여부를 결정한다.

      설정값 설명

      TRUE

      WebTConnectionPool을 사용한다.

      FALSE

      WebTConnectionPool을 사용하지 않는다.

  • connectionPool.groups = String

    • 기본값 : NULL

    • 설정에서 사용할 Connection Pool의 이름을 지정한다. 지정된 이름은 connectionPool.<groupName>.connectTimeout의 <groupName>에 사용된다.

    • 설정순서는 shared group을 먼저 명시한 후, clustered group이 명시하도록 한다. clustered group을 명시할 때에는 반드시 backup cluster 이름이 main cluster이름보다 우선 명시되어야 한다.

  • connectionPool.<groupName>.connectTimeout = int

    • 기본값 : 20 (단위: 초)

    • WebTDataSource에서 커넥션을 가져올 때 사용되는 타임아웃 시간을 지정한다. 정해진 시간 내에 커넥션을 얻거나 새로 생성하지 못하면 예외상황을 반환한다. 만일, clustered type으로 선언된 그룹에 이 옵션을 지정할 경우에는 이 그룹에 속한 모든 WebTDataSrouce들의 connect-timeout시간이 지정한 옵션값으로 동일하게 적용된다.

  • connectionPool.<groupName>.cluster = String

    • 기본값 : NULL

    • 클러스터로 관리할 커넥션 그룹의 이름을 콤마(,)로 구분하여 지정한다.

  • connectionPool.<groupName>.clusterBackup = String

    • 기본값 : NULL

    • Backup으로 설정할 clustered type의 커넥션 그룹을 지정한다.

  • connectionPool.<groupName>.hostAddr = String

    • 기본값 : NULL

    • 접속할 Tmax 서버의 주소를 지정한다. hostAddr이 'path/cllrcad'일 경우 $TMAXDIR/hostAddr으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다. 상세한 설정은 "1.6 Unix Domain Socket 절"을 참고한다.

  • connectionPool.<groupName>.hostPort = String

    • 기본값 : NULL

    • 접속할 Tmax 서버의 포트를 지정한다. hostPort가 '-1'일 경우 $TMAXDIR/hostAddr으로 Unix Domain Socket (AF_UNIX)로 연결 시도를 한다.

  • connectionPool.<groupName>.hostBackupAddr = String

    • 기본값 : NULL

    • 접속할 Tmax 백업 서버의 주소를 지정한다.

  • connectionPool.<groupName>.hostBackupPort = String

    • 기본값 : NULL

    • 접속할 Tmax 백업 서버의 포트를 지정한다.

  • connectionPool.<groupName>.encryption = Boolean

    • 기본값 : FALSE

    • Tmax와 통신할 때 암호화 기능의 사용 여부를 설정한다.

      설정값 설명

      TRUE

      암호화 기능을 사용한다.

      FALSE

      암호화 기능을 사용하지 않는다.

  • connectionPool.<groupName>.check = Boolean

    • 기본값 : FALSE

    • 해당 liveness 체크에 의한 커넥션의 상태 점검 여부를 설정한다. Connection Pool에서 getConnection를 수행할 때 Tmax에 메시지 전송을 통해 연결 여부를 판단하여 연결된 Connection만 리턴할 수 있도록 동작한다.

      설정값 설명

      TRUE

      liveness 체크를 한다.

      FALSE

      liveness 체크를 하지 않는다.

  • connectionPool.<groupName>.userName = String

    • 기본값 : NULL

    • 사용자 보안 인증을 위한 사용자명을 설정한다.

  • connectionPool.<groupName>.userPasswd = String

    • 기본값 : NULL

    • 사용자 보안 인증을 위한 사용자 암호를 설정한다.

  • connectionPool.<groupName>.domainName = String

    • 기본값 : NULL

    • 도메인 보안 인증을 위한 도메인명을 설정한다.

  • connectionPool.<groupName>.domainPasswd = String

    • 기본값 : NULL

    • 도메인 보안 인증을 위한 도메인의 암호를 설정한다.

  • connectionPool.<groupName>.fair.provision = Boolean

    • 기본값 : TRUE

    • WebTConnectionPool에서 커넥션을 얻는 정책을 결정한다.

      설정값 설명

      TRUE

      사용하지 않은 커넥션을 가져온다.

      FALSE

      최근에 사용한 커넥션을 가져온다.

  • connectionPool.<groupName>.initCapacity = int

    • 기본값 : 5

    • WebTConnectionPool의 기본 커넥션의 개수를 지정한다.

  • connectionPool.<groupName>.maxCapacity = int

    • 기본값 : 3

    • 커넥션이 부족해서 새로 커넥션을 생성할 때 새로 생성되는 커넥션의 개수를 설정한다.

  • connectionPool.<groupName>.maxIdleTime = int

    • 기본값 : 600 (단위: Millisecond)

    • 커넥션을 제거할 기준 시간을 설정한다.

      WebTConnectionPool의 커넥션 수가 connectionPool.<groupName>.initCapacity에 설정된 개수보다 클 경우 connectionPool.<groupName>.maxIdleTime에 설정된 시간 동안 사용되지 않은 커넥션을 WebTConnectionPool에서 제거한다.

  • connectionPool.<groupName>.tpTimeout = int

    • 기본값 : 60

    • Tmax 서비스 호출의 타임아웃 시간을 지정한다. NONXA에서만 적용 되며 트랜잭션 시작 후 서비스를 호출할 때에는 tpTImeout 대신 txBlockTimeout을 타임아웃 시간으로 적용한다.

  • connectionPool.<groupName>.txTimeout = int

    • 기본값 : 180

    • Tmax 트랜잭션 서비스 요청의 타임아웃 시간을 지정한다.

  • connectionPool.<groupName>.txBlockTimeout = int

    • 기본값 : 60

    • Tmax 서버에 Commit 또는 Rollback을 요청할 때 타임아웃 시간을 지정한다. 트랜잭션이 시작된 경우 서비스를 호출하는 경우의 타임아웃 값으로 사용한다.

  • connectionPool.<groupName>.header.type = default | extendedV4

    • 기본값 : 대응되는 타입

    • Tmax와 통신할 때의 프로토콜 타입을 결정한다. groupName으로 설정된 커넥션 그룹에서 생성하는 커넥션에 적용되는 프로토콜 타입이다.

      설정값 설명

      default

      Tmax 3.x에서 사용하는 프로토콜이다.

      extendedV4

      Tmax 4.x 이상 버전에서 사용하는 프로토콜이다. Tmax 4.x 이상 버전은 하위 프로토콜을 지원하므로 default로 설정해도 호환된다.

  • connectionPool.<groupName>.eventSvcType = all | broadcast | sendtocli | notify | acall

    • 기본값 : NULL

    • 사용할 이벤트를 설정한다. 2종류 이상의 value를 동시에 설정할 때는 콤마(,)로 구분한다.

      (예: broadcast,notify)

      설정값 설명

      all

      모든 이벤트를 사용한다.

      broadcast

      broadcast 타입 이벤트를 사용한다.

      sendtocli

      sendtocli 타입 이벤트를 사용한다.

      notify

      notify 타입 이벤트를 사용한다.

      acall

      acall 타입 이벤트를 사용한다.

      none

      이벤트를 사용하지 않는다.

  • connectionPool.<groupName>.eventHandler = String

    • 기본값 : NULL

    • 이벤트를 수신할 때 호출되는 인터페이스를 구현한 객체의 이름을 설정한다.

  • connectionPool.<groupName>.type = shared | clustered

    • 기본값 : shared

    • WebTConnectionPool의 타입을 지정한다.

      설정값 설명

      shared

      일반적인 경우이다.

      clustered

      WebTDataSource의 클러스터링을 사용할 경우이다. tmax-delegation-source, connection-timeout, 그리고 clusterBackup을 <property>로 갖는다. connection-timeout의 경우 clustered로 지정된 커넥션 그룹의 설정값이 해당 cluster에 포함된 커넥션 그룹(shared type)의 설정값보다 우선시 된다.

  • tmax.webt.xid.log = boolean

    • 기본값 : false

    • WebT 트랜잭션을 처리할 때 WebT의 로그 레벨이 info인 경우에도 xa_start, xa_prepare, xa_commit, xa_rollback이 로그로 출력된다.

  • webt.mbean = boolean

    • 기본값 : false

    • WebT Admin을 위한 MBean을 등록할지 여부를 지정한다. Webt Admin 기능은 JEUS 6 Fix#7 이상에서 지원한다.

다음은 webt.properties의 설정 예제이다.

#######################################
# logging related parameters.
#######################################
# set log level valid values are none, info, debug. default is none.
log.level=debug

# set directory in which the log file places. if not set, log is

# printed to standard out
log.dir=D:\\

# set the name of the log file. default is webt.log
log.file=webt.log

# set log buffering size. default is 0
log.bufsize=1024

# tmax.webt.xid.log=true


#######################################
# FDL related parameters
#######################################
# set the fdl file.
fdl.file=c:\\tmax\\sample\\fdl\\tmax.fdl


# set application wide default character set. default is system default
defaultCharset=euc-kr


#######################################
# monioring related parameters
#######################################
# enable/disable alive check. default is disable(false)
monitoring.pool.checkAlive=true

# set monitoring interval. default is 60sec
monitoring.pool.interval=5

# set monitoring log file valid-days.default is -1
log.valid.days=1


#######################################
# connection pool realted paramters
#######################################
# Tmax headerType
headerType=extendedV4

# enable/disable connection pool. default is disable(false)
enableConnectionPool=true

# WebtConnectionGroup name list
connectionPool.groups=tmax1

# set connection group type valid values are shared, non-shared,

# non-shared2. default is shared
connectionPool.tmax1.type=shared

# set Tmax Server Address.
connectionPool.tmax1.hostAddr=192.168.1.123

# set Tmax Server Port.
connectionPool.tmax1.hostPort=8888

#######################################
# Unix Domain Socket (AF_UNIX)
#######################################
# set Tmax Server Address.
#connectionPool.tmax1.hostAddr=path/cllrcad
# set Tmax Server Port.
#connectionPool.tmax1.hostPort=-1

# set Backup Tmax Server Address.
connectionPool.tmax1.hostBackupAddr=61.77.153.1

# set Backup Tmax Server Port.
connectionPool.tmax1.hostBackupPort=8889

# set default user name for security.
connectionPool.tmax1.userName=tmax

# set default user passward for security.
connectionPool.tmax1.userPasswd=1234

# set default domain name for security.
connectionPool.tmax1.domainName=TPQA

# set default domain passward for security.
connectionPool.tmax1.domainPasswd=1234

# set initial pool size. default is 10
connectionPool.tmax1.initCapacity=1

# set max pool size. default is 20
connectionPool.tmax1.maxCapacity=10

# set increment step size. default is 5
connectionPool.tmax1.incrementRate=2

# set connection idle time. default is 60sec
connectionPool.tmax1.maxIdleTime=60

# set tptimeout.
connectionPool.tmax1.tpTimeout=40

# set txtimeout.
connectionPool.tmax1.txTimeout=10

# set connection timeout.
connectionPool.tmax1.connectTimeout=10

# enable to event service.

#connectionPool.tmax1.enableEvent=true

# set event service Type.

#connectionPool.tmax1.eventSvcType=all

# set event handler object.

#connectionPool.tmax1.eventHandler=tcpservet.event.GenericEvent
jeus.servlet.webt.autoClose.enable=true
webt.mbean=true

2. WebT 환경설정(JEUS7)

JEUS에서 WebT를 기동하기 위해서는 domain.xml이나 webt.properties 파일 중에 하나를 설정한다.

2.1. domain.xml 설정

JEUS에서 WebT를 기동하기 위해 domain.xml에 <external-source>로 WebTConnectionPool의 환경 정보를 등록한다. WebTConnectionPool을 설정하려면 domain.xml 파일의 <server> 절의 <external-resource> 태그 안에 다음과 같이 정의한다.

<server>
    ...
    <external-resource>
       <property>
            <key>header-type</key>
            <value>extendedV4</value>
       </property>
        <property>
                <key>mbean</key>
                <value>true</value>
        </property>
       <property>
            <key>log-file-name</key>
            <value>/home/tmax1/jeus_sample/webt.log</value>
       </property>
       <property>
            <key>log-level</key>
            <value>dev</value>
       </property>
       <property>
            <key>log-valid-day</key>
            <value>1</value>
       </property>
       <property>
            <key>monitor-interval</key>
            <value>120000</value>
       </property>
       <property>
            <key>check-alive</key>
            <value>true</value>
       </property>
       <name>webtds</name>
       <property>
               <key>webtds.host-name</key>
               <value>192.168.1.165</value>
       </property>
       <property>
               <key>webtds.host-port</key>
               <value>8888</value>
       </property>
       <property>
               <key>webtds.min</key>
               <value>5</value>
       </property>
       <property>
               <key>webtds.max</key>
               <value>10</value>
       </property>
        <property>
              <key>webtds.step</key>
              <value>2</value>
        </property>
        <property>
               <key>webtds.check-acquired</key>
               <value>true</value>
        </property>
         <property>
               <key>webtds.type</key>
               <value>shared</value>
          </property>
       <class-name>tmax.webt.external.WebtResource</class-name>
    </external-resource>
    ...
</server>

domain.xml를 설정할 때 사용하는 <external-resource> 하위 태그의 설정값은 JEUS6의 속성을 참고한다.

WebAdmin에서 External Resource 설정

JEUS 7에서 WebT를 기동하기 위해 WebAdmin 화면에서 직접 External Resouce의 WebTConnectionPool의 환경 정보를 등록할 수 있다. WebTConnectionPool을 설정하려면 WebAdmin의 External Resouce에서 다음과 같이 정의한다.

[Servers] 메뉴를 선택하면 External Resource 설정 화면으로 이동한다. 해당 화면에서 [Resource] 탭의 [External Resource ]를 선택한다.

figure 12
JEUS WebAdmin 화면

다음은 각 항목에 대한 설명과 입력값에 대한 설명이다.

항목 설명

Name

Name을 설정한다. (예: webtds)

Class Name

Class Name을 설정한다. (예: tmax.webt.external.WebtResource)

Propertey

Propertey를 설정한다.

  • header-type=extendedV4
    mbean=true
    log-file-name=/home/tmax1/jeus_sample/webt.log
    log-level=dev
    log-valid-day=1
    monitor-interval=120000
    check-alive=true
    webtds.host-name=192.168.1.165
    webtds.host-port=8888
    webtds.min=5
    webtds.max=10
    webtds.step=2
    webtds.check-acquired=true
    webtds.type=shared

<external-resource> 하위 태그의 설정값은 JEUS 6의 속성을 참고한다.

2.2. webt.properties 설정

JEUS에서 WebT를 기동하기 위해 필요한 환경설정은 WebT의 환경설정 파일인 webt.properties를 설정하는 것으로도 가능하다. webt.properties 파일을 사용해 WebT에서 제공하는 라이브러리로 구현된 클라이언트 프로그램을 구동할 때 환경설정을 초기화한다. 또한 애플리케이션 프로그램을 초기화할 때 WebTSystem API를 사용하는 대신 webt.properties 파일에서 설정할 수 있다.

JEUS 7 이상 domain.xml에 다음과 같이 설정한다.

   <servers>
      <server>
         <jvm-config>
         <jvm-option>-Xmx1024m -XX:MaxPermSize=128m -Dwebt.properties=/home/tmax1/webt/properties/common.properties</jvm-option>
         </jvm-config>
         ...
      </server>
   </servers>

webt.properties 파일의 설정 항목에 대한 자세한 설명은 webt.properties 설정을 참고한다.

3. JTmax 환경설정(JEUS6)

본 절에서는 JEUS에서 JTmax를 기동하기 위해 JEUSMain.xml을 설정하는 방법을 설명한다.

3.1. JEUSMain.xml 설정

다음은 JEUSMain.xml를 설정하는 예제이다. JTmax을 사용하기 위해서는 <external-resource> 태그 내부에 <class-name>tmax.jtmax.external.JTmaxResource</class-name>을 반드시 정의해야 한다. 단, 다음 예제는 EJB 애플리케이션의 classloading mode가 SHARED인 경우에만 사용 가능하다.

<node>
    <name>nodename</name>
    <engine-container>
        <name>container1</name>
        ...
        <external-resource>
            <name>jtmax</name>
            <class-name>tmax.jtmax.external.JTmaxResource</class-name>
            <property>
                <key>log-file-name</key>
                <value>c:\\jtmax.log</value>
            </property>
            <property>
                <key>log-level</key>
                <value>debug</value>
            </property>
            <property>
                <key>log-valid-day</key>
                <value>1</value>
            </property>
            <property>
                <key>fdl-file</key>
                <value>c:\\tmax\\sample\\fdl\\tmax.fdl</value>
            </property>
            <property-group>
                <name-prefix>jtmax1</name-prefix>
                <property>
                    <key>listen-port</key>
                    <value>6735</value>
                </property>
                <property>
                    <key>min</key>
                    <value>2</value>
                </property>
                <property>
                    <key>max</key>
                    <value>4</value>
                </property>
                <property>
                    <key>step</key>
                    <value>2</value>
                </property>
                <property>
                    <key>period</key>
                    <value>600000</value>
                </property>
                <property>
                    <key>mbean</key>
                    <value>true</value>
                </property>
                <property-group>
                    <name-prefix>ejb-service</name-prefix>
                    <property>
                        <key>name</key>
                        <value>ejb01</value>
                    </property>
                    <property-group>
                        <name-prefix>GSVC01</name-prefix>
                        <property>
                            <key>export-name</key>
                            <value>echotest</value>
                        </property>
                        <property>
                            <key>method-name</key>
                            <value>setStringEcho</value>
                        </property>
                        <property>
                            <key>method-signature</key>
                            <value>string</value>
                        </property>
                    </property-group>
                    <property-group>
                        <name-prefix>GSVC02</name-prefix>
                        <property>
                            <key>export-name</key>
                            <value>echotest</value>
                        </property>
                        <property>
                            <key>method-name</key>
                            <value>setIntEcho</value>
                        </property>
                        <property>
                            <key>method-signature</key>
                            <value>int</value>
                        </property>
                    </property-group>
                </property-group>
            </property-group>
        </external-resource>
        ...
    </engine-container>
</node>

다음은 JTmax 사용을 위해 JEUSMain.xml에 설정하는 태그에 대한 설명이다. <key> 태그에는 속성 이름을 <value> 태그에는 적용 가능한 값을 설정한다.

<key> 구분 <value>

listen-port

설정값

int

기본값

0

설명

커넥션을 설정할 포트를 지정한다.

min

설정값

int

기본값

2

설명

요청을 처리할 기본 핸들러의 개수를 지정한다.

max

설정값

int

기본값

4

설명

요청을 처리할 최대 핸들러의 개수를 설정한다.

step

설정값

int

기본값

2

설명

요청에 대한 핸들러가 부족할 때 추가적으로 생성하는 핸들러의 수를 설정한다.

period

설정값

int

기본값

600000 (단위: Millisecond)

설명

핸들러를 제거하는 기준시간을 지정한다. 핸들러의 수가 min에 설정한 개수보다 클 때 핸들러를 사용하지 않은 시간이 period에 지정된 시간을 초과할 경우 핸들러를 제거한다.

log-file-name

설정값

String

기본값

NULL

설명

로그 파일의 상대 경로 또는 절대 경로를 지정한다.

log-level

설정값

none | info | debug

기본값

info

설명

로그 레벨을 지정한다.

log-file-format

설정값

string(형식)

기본값

MMddyyyy

설명

log-valid-day가 1 이상일 경우 생성되는 로그 파일명의 형식을 지정한다.

log-buffer-size

설정값

int

기본값

512

설명

로그를 남길 때 사용되는 버퍼의 크기를 지정한다.

log-valid-day

설정값

int

기본값

-1

설명

로그 파일을 사용하는 경우 며칠 주기로 파일명을 갱신할 것인지를 지정한다. 0이나 음수값을 지정하는 경우 하나의 파일을 사용한다.

fdl-file

설정값

string

기본값

NULL

설명

Tmax FDL 버퍼를 사용하기 위한 필드 테이블의 위치를 지정한다.

default-charset

설정값

string

기본값

NULL

설명

Tmax 버퍼의 내용에 적용되는 Character Set을 지정한다.

mbean

설정값

true | false

기본값

false

설명

JTmax Admin을 위한 MBean을 등록할지 여부를 지정한다. JTmax Admin 기능은 JEUS 6 Fix#7 이상에서 지원한다.

3.2. EJB 설정

EJB를 사용하려면 JEUSMain.xml에서 EJB 서비스 정보를 등록해야 한다. Tmax 클라이언트에서 사용할 서비스명과 JEUS EJB 서비스의 메소드명을 대응시켜서 설정한다. Tmax 클라이언트의 서비스명과 JEUS EJB 서비스의 메소드명이 대응되는 부분은 다음과 같다.

<property-group>
     <name-prefix>ejb-service</name-prefix>
     <property>
         <key>name</key>
          <value>ejb01</value>
      </property>
      <property-group>
           <name-prefix>GSVC02</name-prefix>
           <property>
               <key>export-name</key>
                <value>echotest</value>
            </property>
            <property>
                <key>method-name</key>
                <value>setIntEcho</value>
            </property>
            <property>
                <key>method-signature</key>
                <value>int</value>
            </property>
        </property-group>
</property-group>

위에서 <name-prefix> 태그에 설정된 GSVC02는 Tmax에서 호출되는 EJB 서비스명이고 실질적인 EJB 서비스는 IntEcho이다.

<property-group>/<property> 속성의 <key> 태그에 해당하는 각각의 의미는 다음과 같다.

<key> 속성 구분 <value> 설명

export-name

설정값

string

기본값

NULL

설명

EJB명을 의미한다.

method-signature

설정값

char | long | int | double | float | string | bytes

기본값

NULL

설명

서비스가 변수로 받는 인자의 형식을 지정한다. 2종류 이상의 값을 동시에 설정할 때는 콤마(,)로 구분한다. (예: int,float)

max

설정값

int

기본값

4

설명

요청을 처리할 최대 핸들러의 개수를 설정한다.

EJB 서비스의 환경설정

EJB 서비스를 호출하기 위한 Tmax 환경설정 파일에 SERVICE 절과 GATEWAY 절을 설정해야 한다.

  • SERVICE 절

    다음은 SERVICE 절을 설정하는 문법과 항목에 대한 설명이다.

    *SERVICE
    ServiceName   SVRNAME = ServerName
    항목 설명

    ServiceName

    Tmax 클라이언트에서 호출할 서비스명으로, WebT 서버를 사용할 경우 JEUS에서 제공하는 EJB 서비스에 대한 Alias이다. 실제로 수행할 JEUS의 EJB 서비스의 내용은 JEUS 서비스 파일에 설정한다.

    SVRNAME

    해당 서비스를 제공하는 서버 프로그램명으로 WebT 서버를 사용하는 경우 GATEWAY 절에 설정하게 되는 JAVAGW의 이름(GatewayName)을 지정한다.

  • GATEWAY 절

    다음은 GATEWAY 절을 설정하는 문법과 항목에 대한 설명이다.

    *GATEWAY
    GatewayName   GWTYPE = GWType,
                  PORTNO = PortNumber,
                  RGWADDR = RemoteIPAddress,
                  RGWPORTNO = RemotePortNumber,
                  NODENAME = NodeName
    항목 설명

    GatewayName

    Tmax 서버 프로그램이나 다른 게이트웨이들과 구분하기 위해 사용하는 해당 게이트웨이의 고유 명칭이다.

    GWTYPE

    Tmax에서 사용하는 게이트웨이의 종류를 지정한다. JAVAGW를 사용하기 위해서는 'JEUS’로 설정한다.

    PORTNO

    Tmax와 JAVAGW 게이트웨이가 통신하기 위해 사용하는 포트 번호이다.

    RGWADDR

    게이트웨이가 접속할 상대방의 IP 주소이다. JAVAGW가 접속할 JEUS 서버의 IP 주소를 설정한다.

    RGWPORTNO

    게이트웨이가 접속할 상대방의 포트 번호이다. JEUS의 JTmax 환경설정 파일에 설정된 커넥션 포트 번호를 설정한다.

    NODENAME

    해당 로컬 노드의 이름이다.

다음은 EJB 서비스를 호출하기 위한 설정의 예제이다.

*SERVICE
GSVC01 SVRNAME = JAVAGW
GSVC02 SVRNAME = JAVAGW

*GATEWAY
JAVAGW GWTYPE = JEUS,
PORTNO = 6734,
RGWADDR = "127.0.0.1",
RGWPORTNO = 6735,
NODENAME = node_name

위와 같이 작성된 환경설정 파일을 sample.m이라고 했을 때 환경설정 파일을 작성한 후 JEUS를 기동한 상태로 Tmax 서버에서 다음과 같은 명령으로 Tmax를 기동하면 JTmax로의 연결이 이루어진다.

cfl -i sample.m

서버를 사용하기 위한 Tmax 환경설정 파일의 설정은 게이트웨이를 사용하기 위한 설정과 동일하다. 자세한 설정 방법은 "Tmax Administration Guide"를 참고한다.

4. JTmax 환경설정(JEUS7)

본 절에서는 JEUS에서 JTmax를 기동하기 위해 domain.xml을 설정하는 방법을 설명한다.

4.1. domain.xml 설정

다음은 domain.xml를 설정하는 예제이다. JTmax을 사용하기 위해서는 <external-resource> 태그 내부에 <class-name>tmax.jtmax.external.JTmaxResource</class-name>을 반드시 정의해야 한다. 단, 다음 예제는 EJB 애플리케이션의 classloading mode가 SHARED인 경우에만 사용 가능하다.

   <servers>
      <server>
      ...
         <external-resource>
            <name>jtmax</name>
            <class-name>tmax.jtmax.external.JTmaxResource</class-name>
            <property>
                <key>mbean</key>
                <value>true</value>
            </property>
            <property>
               <key>header-type</key>
               <value>extendedV4</value>
            </property>
            <property>
               <key>log-file-name</key>
               <value>/home/tmax1/jeus_sample/jtmax.log</value>
            </property>
            <property>
               <key>log-level</key>
               <value>debug</value>
            </property>
            <property>
               <key>log-valid-day</key>
               <value>1</value>
            </property>
            <property>
               <key>fdl-file</key>
               <value>/home/tmax1/jeus_sample/jtmax.fdl</value>
            </property>
           <!- TPQA는 ejb service name에서 사용한다. -->
            <property>
               <key>TPQA.listen-port</key>
               <value>8181</value>
            </property>
            <property>
               <key>min</key>
               <value>2</value>
            </property>
            <property>
               <key>max</key>
               <value>2</value>
            </property>
            <property>
               <key>step</key>
               <value>2</value>
            </property>
            <property>
               <key>period</key>
               <value>600000</value>
            </property>
            <property>
               <key>TPQA.ejb-service.name</key>
               <value>ECHOSTRING_J</value>
            </property>
            <property>
               <key>TPQA.ejb-service.ECHOSTRING_J.export-name</key>
               <value>echo</value>
            </property>
            <property>
               <key>TPQA.ejb-service.ECHOSTRING_J.method-name</key>
               <value>echoString</value>
            </property>
            <property>
               <key>TPQA.ejb-service.ECHOSTRING_J.method-signature</key>
               <value>string</value>
            </property>
            <property>
               <key>TPQA.ejb-service.name</key>
               <value>FDLSTRING</value>
            </property>
            <property>
               <key>TPQA.ejb-service.name</key>
               <value>FDLSTRING</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.export-name</key>
               <value>echo</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.method-name</key>
               <value>fdlEchoString</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.method-signature</key>
               <value>webt</value>
            </property>
         </external-resource>
      </server>
   </servers>

다음은 JTmax 사용을 위해 domain.xml에 설정하는 태그에 대한 설명이다. <key> 태그에는 속성 이름을 <value> 태그에는 적용 가능한 값을 설정한다.

<key> 구분 <value>

listen-port

설정값

int

기본값

0

설명

커넥션을 설정할 포트를 지정한다.

min

설정값

int

기본값

2

설명

요청을 처리할 기본 핸들러의 개수를 지정한다.

max

설정값

int

기본값

4

설명

요청을 처리할 최대 핸들러의 개수를 설정한다.

step

설정값

int

기본값

2

설명

요청에 대한 핸들러가 부족할 때 추가적으로 생성하는 핸들러의 수를 설정한다.

period

설정값

int

기본값

600000 (단위: Millisecond)

설명

핸들러를 제거하는 기준시간을 지정한다. 핸들러의 수가 min에 설정한 개수보다 클 때 핸들러를 사용하지 않은 시간이 period에 지정된 시간을 초과할 경우 핸들러를 제거한다.

log-file-name

설정값

String

기본값

NULL

설명

로그 파일의 상대 경로 또는 절대 경로를 지정한다.

log-level

설정값

none | info | debug

기본값

info

설명

로그 레벨을 지정한다.

log-file-format

설정값

string(형식)

기본값

MMddyyyy

설명

log-valid-day가 1 이상일 경우 생성되는 로그 파일명의 형식을 지정한다.

log-buffer-size

설정값

int

기본값

512

설명

로그를 남길 때 사용되는 버퍼의 크기를 지정한다.

log-valid-day

설정값

int

기본값

-1

설명

로그 파일을 사용하는 경우 며칠 주기로 파일명을 갱신할 것인지를 지정한다. 0이나 음수값을 지정하는 경우 하나의 파일을 사용한다.

fdl-file

설정값

string

기본값

NULL

설명

Tmax FDL 버퍼를 사용하기 위한 필드 테이블의 위치를 지정한다.

default-charset

설정값

string

기본값

NULL

설명

Tmax 버퍼의 내용에 적용되는 Character Set을 지정한다.

mbean

설정값

true | false

기본값

false

설명

JTmax Admin을 위한 MBean을 등록할지 여부를 지정한다. JTmax Admin 기능은 JEUS 6 Fix#7 이상에서 지원한다.

WebAdmin에서 설정

다음은 JEUS WebAdmin에서 External Resource Perperty 설정하는 예제이다.

figure 11
JTMAX Propertey 설정 정보 화면

다음은 각 항목에 대한 설명과 입력값에 대한 설명이다.

항목 설명

Propertey

Propertey를 설정한다.

  • mbean=true
    header-type=extendedV4
    log-file-name=/home/tmax1/jeus_sample/jtmax.log
    log-level=debug log-valid-day=1
    fdl-file=/home/tmax1/jeus_sample/jtmax.fdl
    min=2 max=2
    step=2
    period=600000
    TPQA.listen-port=8181
    TPQA.ejb-service.name=ECHOSTRING_J
    TPQA.ejb-service.ECHOSTRING_J.export-name=echo
    TPQA.ejb-service.ECHOSTRING_J.method-name=echoString
    TPQA.ejb-service.ECHOSTRING_J.method-signature=string
    TPQA.ejb-service.name=FDLSTRING
    TPQA.ejb-service.FDLSTRING.export-name=echo
    TPQA.ejb-service.FDLSTRING.method-name=fdlEchoString
    TPQA.ejb-service.FDLSTRING.method-signature=webt

4.2. EJB 설정

EJB를 사용하려면 domain.xml에서 EJB 서비스 정보를 등록해야 한다. Tmax 클라이언트에서 사용할 서비스명과 JEUS EJB 서비스의 메소드명을 대응시켜서 설정한다. Tmax 클라이언트의 서비스명과 JEUS EJB 서비스의 메소드명이 대응되는 부분은 다음과 같다.

            <property>
               <key>TPQA.ejb-service.name</key>
               <value>ECHOSTRING_J</value>
            </property>
            <property>
               <key>TPQA.ejb-service.ECHOSTRING_J.export-name</key>
               <value>echo</value>
            </property>
            <property>
               <key>TQPA.ejb-service.ECHOSTRING_J.method-name</key>
               <value>echoString</value>
            </property>
            <property>
               <key>TPQA.ejb-service.ECHOSTRING_J.method-signature</key>
               <value>string</value>
            </property>

            <property>
               <key>TPQA.ejb-service.name</key>
               <value>FDLSTRING</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.export-name</key>
               <value>echo</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.method-name</key>
               <value>fdlEchoString</value>
            </property>
            <property>
               <key>TPQA.ejb-service.FDLSTRING.method-signature</key>
               <value>webt</value>
            </property>

위에서 TPQA.ejb-service.name 설정된 ECHOSTRING_J는 Tmax에서 호출되는 EJB 서비스명이고 실질적인 EJB 서비스는 echoString 이다.

JEUS WebAdmin에서 External Resource Perperty에서 EJB 서비스를 직접 방법은 domain.xml 설정을 참고한다.

<property> 속성의 <key> 태그에 해당하는 각각의 의미는 다음과 같다.

<key> 속성 구분 <value> 설명

export-name

설정값

string

기본값

NULL

설명

EJB명을 의미한다.

method-signature

설정값

char | long | int | double | float | string | bytes | webt

기본값

NULL

설명

서비스가 변수로 받는 인자의 형식을 지정한다. 2종류 이상의 값을 동시에 설정할 때는 콤마(,)로 구분한다. (예: int,float)

method-name

설정값

string

기본값

NULL

설명

호출하려는 EJB 서비스 이름이다.

EJB 서비스의 환경설정

EJB 서비스를 호출하기 위한 Tmax 환경설정 파일에 SERVICE 절과 GATEWAY 절을 설정해야 한다.

  • SERVICE 절

    다음은 SERVICE 절을 설정하는 문법과 항목에 대한 설명이다.

    *SERVICE
    ServiceName   SVRNAME = ServerName
    항목 설명

    ServiceName

    Tmax 클라이언트에서 호출할 서비스명으로, WebT 서버를 사용할 경우 JEUS에서 제공하는 EJB 서비스에 대한 Alias이다. 실제로 수행할 JEUS의 EJB 서비스의 내용은 JEUS 서비스 파일에 설정한다.

    SVRNAME

    해당 서비스를 제공하는 서버 프로그램명으로 WebT 서버를 사용하는 경우 GATEWAY 절에 설정하게 되는 JAVAGW의 이름(GatewayName)을 지정한다.

  • GATEWAY 절

    다음은 GATEWAY 절을 설정하는 문법과 항목에 대한 설명이다.

    *GATEWAY
    GatewayName   GWTYPE = GWType,
                  PORTNO = PortNumber,
                  RGWADDR = RemoteIPAddress,
                  RGWPORTNO = RemotePortNumber,
                  NODENAME = NodeName
    항목 설명

    GatewayName

    Tmax 서버 프로그램이나 다른 게이트웨이들과 구분하기 위해 사용하는 해당 게이트웨이의 고유 명칭이다.

    GWTYPE

    Tmax에서 사용하는 게이트웨이의 종류를 지정한다. JAVAGW를 사용하기 위해서는 'JEUS’로 설정한다.

    PORTNO

    Tmax와 JAVAGW 게이트웨이가 통신하기 위해 사용하는 포트 번호이다.

    RGWADDR

    게이트웨이가 접속할 상대방의 IP 주소이다. JAVAGW가 접속할 JEUS 서버의 IP 주소를 설정한다.

    RGWPORTNO

    게이트웨이가 접속할 상대방의 포트 번호이다. JEUS의 JTmax 환경설정 파일에 설정된 커넥션 포트 번호를 설정한다.

    NODENAME

    해당 로컬 노드의 이름이다.

다음은 EJB 서비스를 호출하기 위한 설정의 예제이다.

*SERVICE
ECHOSTRING_J SVRNAME = JAVAGW
FDLSTRING    SVRNAME = JAVAGW

*GATEWAY
JAVAGW GWTYPE = JEUS,
PORTNO = 6734,
RGWADDR = "127.0.0.1",
RGWPORTNO = 6735,
NODENAME = node_name

위와 같이 작성된 환경설정 파일을 sample.m이라고 했을 때 환경설정 파일을 작성한 후 JEUS를 기동한 상태로 Tmax 서버에서 다음과 같은 명령으로 Tmax를 기동하면 JTmax로의 연결이 이루어진다.

cfl -i sample.m

서버를 사용하기 위한 Tmax 환경설정 파일의 설정은 게이트웨이를 사용하기 위한 설정과 동일하다. 자세한 설정 방법은 "Tmax Administration Guide"를 참고한다.

5. 그 외의 환경설정

Rolling Down 기능

WebT 클라이언트에서 JEUSMain.xml과 클라이언트를 실행할 때 다음의 WebT 애플리케이션을 설정하면 Rolling Down 기능을 사용할 수 있다.

  • JEUSMain.xml

    다음은 JEUSMain.xml에 Rolling Down 기능을 설정하는 예이다.

    <command-option>
      -DUSE_ROLLING_DOWN=true
    </command-option>
    • <command-option>-Dtmax.webt.xid.log=true | false</command-option>

      WebT 트랜잭션을 처리할 때 WebT의 로그 레벨이 info인 경우에도 xa_start, xa_prepare, xa_commit, xa_rollback이 로그로 출력된다. (기본값: false)

  • WebT 애플리케이션

    System.setProperty("USE_ROLLING_DOWN", "true")
Unix Domain Socket 기능

Unix(Sun, Aix, Linux, HP-UX)에서는 IPC를 위해서 TCP Socket 이외에 Unix Domain Socket을 제공한다. Tmax를 사용하는 클라이언트가 같은 머신(노드)에 있다면 일반 TCP Socket보다 Unix Domain Socket을 사용하는 것이 더 유리하므로 WebT 또한 같은 환경에서 Unix Domain Socket을 사용할 수 있도록 기능을 제공한다.

  • 지원하는 OS 및 JDK 버전

    • JDK 1.6 이상

    • linux x86_64 32/64bit, aix6.1 32/64bit 이상, sunOS 5.10 sparc 32/64bit 이상, hp11.31 32/64bit 이상만을 지원(HP에서는 JDK에 따라서 libweb.sl 파일을 읽지 못하고 libwebt.so 파일만 로드할 수 있는 경우가 있기 때문에 배포되는 파일의 이름을 libwebt.sl을 libwebt.so로 변경하여 사용해야 한다.)

설정을 통한 생성은 port를 "-1", 주소를 "path/cllrcad"로 지정해서 Tmax에 접속할 때 Unix Domain Socket을 사용한다. WebtConnection API를 사용할 때에도 마찬가지 방법으로 port와 IP 주소 부분을 지정하고 연결를 하면 해당 기능이 동작한다.

figure 18
Unix Domain Socket 설정 정보 화면

Unix Domain Socket 기능을 사용하기 위해서는 설정 이외에 우선적으로 다음과 같은 작업을 수행 후 WebT를 사용하여 작성된 에플리케이션을 기동해야 한다.

  • TMAXDIR 환경변수 지정

    Webt를 실행하는 셸에서 실제 동작 중인 TMAXDIR 환경변수를 지정한다.

    export TMAXDIR=/home/tmax
  • native library를 LD_LIBRARY_PATH에 위치한다.

    함께 배포되는 libwebt.so(.sl)에 대해서 WebT를 실행하는 셸에서 LD_LIBRARY_PATH에 라이브러리 위치를 지정한다.

    export LD_LIBRARY_PATH=/home/webt/lib:$LD_LIBRARY_PATH

Unix Domain Socket 기능을 사용하는 경우 RollingDown 기능을 함께 사용할 수 없다.