티스토리 뷰

728x90
반응형

 포스팅은 JEUS7과 WebT 간의 연동 가이드입니다.


WebT(Web Transaction)는 클라이언트/서버 환경의 미들웨어 제품인 Tmax 서버와 Java 애플리케이션 프로그램 사이의 트랜잭션 서비스를 지원하는 프로그램으로 API 라이브러리 형태로 배포됩니다. WebT는 JEUS를 비롯한 웹 기반 환경의 WAS(Web Application Server) 제품에서 활용될 수 있습니다. Tmax의 트랜잭션 처리와 부하 조절 기능을 이용해 웹 환경에서 동적 데이터 서비스를 제공할 수 있도록 설계되었습니다.

WebT와 Tmax 간의 서비스 흐름


WebT는 Tmax의 연결을 효율적으로 관리하기 위해 WebTConnectionPool 클래스를 제공합니다. WebTConnectionPool은 Tmax 서비스를 요청할 때마다 매번 연결 객체를 새로 생성하지 않고 이전에 사용한 객체를 재사용합니다. 연결 객체의 재사용을 통해 Tmax 서버에 네트워크 연결을 설정하고 종료하는 데 소비되는 자원 및 시간이 절약됩니다.


먼저 설정에 앞서 WebT 설정 전 확인 사항에 대해 알아보겠습니다.

WebT Version

WebT는 Web을 통해 Transaction Service 를 제공받을 수 있도록 해주는 Web Gateway 로서 Java 로 구현되었습니다. WWW 서비스가 최근에는 CGI, Java Applet, Servlet 등 동적 정보를 제공할 수 있는 기술이 등장하면서 동적 데이터 서비스의 비중이 점점 커지고 있으며, 근래에 들어서 뱅킹 서비스, 전자 상거래 등 트랜잭션 업무를 가장 대중적인 서비스 방법인 WWW 를 통하여 제공하려는 시도가 이루어 지고 있습니다.
이러한 트랜잭션 서비스나 동적 데이터 서비스는 서버에 가중되는 부하가 상대적으로 높으며 웹 서버 자체에는 트랜잭션 단위의 일처리 개념이 없기 때문에 그 보완책으로 TP-Monitor 를 Web Server 와 연동하는 방식이 많이 시도되고 있습니다.

WebT는 순수 Java 로 구현되었기 때문에 Java 환경이 사용 가능한 모든 플랫폼에서 사용할 수 있습니다.


Version

JDK 호환성

JEUS 호환성

WebtUtil 호환성

WebT-7.0 

JDK 1.5 이상

JEUS 6.0 Fix#7 이상 버전                                      

WebtUtil-5.9 이상

WebT-6.0 

JDK 1.5 이상

JEUS 6.0 Fix#2 이상 버전                                      

WebtUtil-5.9 이상

WebT-5.8 

JDK 1.4 이상

JEUS 6.0 Fix#1                                             

WebtUtil-5.9 이상

WebT-5.5.1

JDK 1.4 이상

JEUS 5.0 Fix#23 이상 버전 WebT 5.5.1.x => JEUS 5.0Fix#23 이상 버전

WebtUtil-5.5

WebT-5.5.0

JDK 1.3 이상

JEUS 5.0 Fix#22 이하 버전 WebT 5.5.0.x => JEUS 5.0Fix#22 이하 버전

WebtUtil-5.5

WebT-3.5 

JDK 1.3 이상

JEUS 4.2 이하 버전                                            

WebtUtil-5.5











WebUtil Version

WebT 라이브러리를 이용하여 단독으로 Java Application 을 작성하고자 하는 경우 필요한 Dependent Library입니다. JEUS 상에서 운영되는 Java Application 을 작성하는 경우에는 필요하지 않습니다.

WebtUtil 는 순수 Java 로 구현되었기 때문에 Java 환경이 사용 가능한 모든 플랫폼에서 사용할 수 있습니다.


Version    

WebT 호환성

WebtUtil-5.9

WebT-5.8.x ~ WebT-5.9.x

WebtUtil-5.5

WebT-3.5 ~ WebT-5.5.1.x






본격적으로 JEUS7에서 Tmax를 연동하기 위한 WebT 설정에 대해 알아보겠습니다.
먼저 lib 추가입니다.
  $JEUS_HOME/lib/system/ 하위에 WebT-7.0.1.1-r9617-forJEUS7.1.jar를 추가합니다.

[nara@ftech1:/home/jeus/lib/system]$ ls -altr

.....

-rwxrwxr-x  1 nara nara  1082829  8월 26 15:44 WebT-7.0.1.1-r9617-forJEUS7.1.jar


다음으로 webt.properties 설정파일을 작성합니다.
 대상 파일은 해당 위치에 작성합니다. (/home/jeus/webt/webt.properties
)

log.level=debug

log.dir=/home/jeus/webt/webtlog1

log.file=webt.log

log.bufsize=512

log.valid.days=1

fdl.file=/home/tmax/sample/fdl/tmax.fdl

defaultCharset=euc-kr

monitoring.pool.checkAlive=true

monitoring.pool.checkIdle=true

monitoring.pool.interval=60

monitoring.log.validDays=1

enableModify=false

enableConnectionPool=true

connectionPool.groups=tmax1

connectionPool.tmax1.type=shared

connectionPool.tmax1.hostAddr=192.168.220.100

connectionPool.tmax1.hostPort=8888

connectionPool.tmax1.hostBackupAddr=192.168.196.3

connectionPool.tmax1.initCapacity=5

connectionPool.tmax1.maxCapacity=50

connectionPool.tmax1.incrementRate=2

connectionPool.tmax1.maxIdleTime=60

connectionPool.tmax1.tpTimeout=10

connectionPool.tmax1.txTimeout=10

connectionPool.tmax1.connectTimeout=10

jeus.servlet.webt.autoClose.enable=true

webt.mbean=true


설정 항목 설명
Log 설정 

- log.level : 로그 레벨을 지정한다

- log.dir : WebT 로그 파일의 저장되는 디렉터리 경로를 설정한다  

- log.file : WebT 로그 파일명을 지정한다

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

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

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


Fdl 설정

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


Monitoring 설정

- monitoring.pool.failback : 백업 주소를 지정했을 때 메인 서버의 문제가 해결된 경우 다시 메인 서버의 서비스를 이용할지를 지정한다

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

- monitoring.pool.interval : 커넥션의 상태 점검 주기를 설정한다


ConnectionPool 설정

- enableConnectionPool : WebTConnectionPool의 사용 여부를 결정한다.

- connectionPool.groups : 설정에서 사용할 Connection Pool의 이름을 지정한다.

- connectionPool.<groupName>.connectTimeout : WebTDataSource에서 커넥션을 가져올 때 타임아웃 시간을 지정한다.

- connectionPool.<groupName>.cluster : 클러스터로 관리할 커넥션 그룹의 이름을 콤마(,)로 구분하여 지정한다.

- connectionPool.<groupName>.hostAddr : 접속할 Tmax 서버의 주소를 지정한다. 

hostAddr이 'path/cllrcad'일 경우 $TMAXDIR/hostAddr 으로 Unix Domain Socket (AF_UNIX) 로 연결 시도를 한다.

- connectionPool.<groupName>.hostPort : 접속할 Tmax 서버의 포트를 지정한다. 

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

- connectionPool.<groupName>.hostBackupAddr : 접속할 Tmax 백업 서버의 주소를 지정한다.

- connectionPool.<groupName>.hostBackupPort : 접속할 Tmax 백업 서버의 포트를 지정한다.

- connectionPool.<groupName>.userName : 사용자 보안 인증을 위한 사용자명을 설정한다.

- connectionPool.<groupName>.userPasswd : 사용자 보안 인증을 위한 사용자 암호를 설정한다.

- connectionPool.<groupName>.domainName : 도메인 보안 인증을 위한 도메인명을 설정한다.

- connectionPool.<groupName>.domainPasswd : 도메인 보안 인증을 위한 도메인의 암호를 설정한다.

- connectionPool.<groupName>.initCapacity : WebTConnectionPool의 기본 커넥션의 개수를 지정한다.

- connectionPool.<groupName>.maxCapacity : 커넥션이 부족해서 새로 커넥션을 생성할 때 새로운 커넥션의 개수를 설정한다.

- connectionPool.<groupName>.maxIdleTime : 커넥션을 제거할 기준 시간을 설정한다.

- connectionPool.<groupName>.tpTimeout : Tmax 서비스 호출의 타임아웃 시간을 지정한다.

- connectionPool.<groupName>.txTimeout : Tmax 트랜잭션 서비스 요청의 타임아웃 시간을 지정한다.

- connectionPool.<groupName>.eventSvcType : 사용할 이벤트를 설정한다.

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

- connectionPool.<groupName>.type : WebTConnectionPool의 타입을 지정한다.

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


WebT Admin 설정

- webt.mbean : WebT Admin을 위한 MBean을 등록할지 여부를 지정한다.


다음으로 JVM-Option 설정입니다. (Servers tap click -> MS 선택 -> jvm옵션)

-Dwebt.properties= ${JEUS_HOME}/webt/webt.properties 추가합니다.


 

다음으로 jeus 부팅시 library 로딩 설정입니다. (Servers tap click-> Resource tap click -> Lifecycle Invocation 선택 후 add)


마지막으로 webt 설정 확인입니다.

경로 : /home/jeus/webt/webtlog1
파일 : webt.log

webt.properties에서 설정한 로그를 확인합니다.

[2017.08.26 16:37:37:365] (webtob-hth0-25)[2017.08.26 16:37:37:365] WebT(version:{7.0.1.1 r9617}) logger start

[2017.08.26 16:37:37:375] (webtob-hth0-25)[WEBT-5105]null FDL file /home/ tmax/sample/fdl/tmax.fdl is initialized

[2017.08.26 16:37:37:375] (webtob-hth0-25)

        >>>>> WebtSystem Properties <<<<<

        log level                 : debug

        log file places           : /home/jeus/webt/webtlog1

        log file name             : webt.log

        log buffer size           : 512

        log date format           : MMddyyyy

        log valid days            : 1

        fdl file                  : /home/tmax/sample/fdl/tmax.fdl

        default character set     : euc-kr

        extended tmax header size : false

        pool alive check          : true

        monitoring interval time  : 60


[2017.08.26 16:37:37:383] (webtob-hth0-25)[WEBT-2503][tmax1] set executor tmax.webt.util.DefaultExecutor

[2017.08.26 16:37:37:383] (webtob-hth0-25)[WEBT-2500][tmax1] internal connection pool tmax1 is initialized

[2017.08.26 16:37:37:383] (webtob-hth0-25)[WEBT-2502][tmax1] create connection delegated for 0 msec

[2017.08.26 16:37:37:383] (webtob-hth0-25)[WEBT-2100][tmax1] shared connection pool tmax1 is initiated

[2017.08.26 16:37:37:384] (webtob-hth0-25)

 --- connection group name [tmax1] ---

        connection group type      : shared

        tmax header type           : 9999

        tmax server address        : 192.168.0.1

        tmax server port           : 8888

        tmax backup server address : 192.168.0.2

        tmax backup server port    : 8888

        XA transaction support     : false

        SSL encryption             : false

        security user name         : null

        security user passward     : null

        security domain name       : null

        security domain passward   : null

        service timeout            : 10

        transaction timeout        : 10

        transaction block timeout  : 60

        connection provisioning    : FAIR

        initial pool size          : 5

        max pool size              : 50

        increment step             : 2

        connection idle time       : 60000

[2017.08.26 16:37:37:386] (Thread-23)[WEBT-2002][tmax1] create xa connection

정상 동작 확인


위와같이 설정 및 기동까지 완료가 되었으면 최종적으로 Tmax와 정상적으로 연동되었는지 확인을 수행합니다.

방법 : tmax에 TOUPPER 함수 Jeus에 TOUPPER 함수를 사용하는 application deploy를 수행합니다. 서비스 호출 시 소문자 aaaa가 대문자 AAAA로 호출 되면 성공으로 판단합니다.

대상 파일 : webt.jsp

<%@page import="tmax.webt.*,java.util.*" %>

<%

WebtConnection con = null;

WebtRemoteService svc = null;


try {

     Hashtable ht = WebtConnectionPool.getGroupList();

  System.err.println("hazard11 hashtable: " + ht);

        con = WebtConnectionPool.getConnection("tmax1");

        svc = new WebtRemoteService("TOUPPER", con);

        WebtBuffer sndbuf = svc.createStringBuffer();

        sndbuf.setString("aaaa");

        WebtBuffer rcvbuf = svc.tpcall(sndbuf);

        out.println("con[" + rcvbuf + "]");

} catch(WebtException e) {

        out.println("WebtException..tperrno:" + e.getTPError());

        e.printStackTrace();

} finally {

        if(con!=null) con.close();

}

%>

Result 

 

본 포스팅의 마지막으로 webt 모니터링 방법에 대해 알아보겠습니다.

방법 : Jeus Console tool을 사용합니다. (jeusadmin -host addr:portno -u username -p password)
> webtadmin [-C serverName] [-m] [-g groupName] [-c connectionName]

WebT - JEUS 설정을 통해 Tmax 연동 및 모니터링등에 사용이 가능합니다.


지금까지 JEUS7 - WebT 연동에 대해 알아보았습니다.

고맙습니다.

728x90
반응형