Tmax JTmaxServer User Guide Tmax v5.0 SP1 Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved.
Copyright Notice Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 263 분당스퀘어 (AK 프라자 ) 12 층 Restricted Rights Legend All TmaxSoft Software (Tmax ) and documents are protected by copyright laws and the Protection Act of Com puter Programs, and international convention. TmaxSoft software and documents are made available under the terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd. 이소프트웨어 (Tmax ) 사용설명서의내용과프로그램은저작권법, 컴퓨터프로그램보호법및국제조약에의해서보호받고있습니다. 사용설명서의내용과여기에설명된프로그램은 TmaxSoft Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용설명서의전부또는일부분을 TmaxSoft의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tmax, Tmax WebtoB and JEUS are registered trademark of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Tmax, Tmax WebtoB 와 JEUS 는 TmaxSoft Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice This product includes various open source software that has been developed and/or licensed by OpenSSL, RSA Data Security, Inc., Apache Foundation, or Jean-loup Gailly and Mark Adler. TmaxSoft fully respects the aforementioned parties and the open source software used in this product. More details can be found within the directory ${INSTALL_PATH/license/oss_licenses 본제품은 OpenSSL, RSA Data Security, Inc., Apache Foundation 및 Jean-loup Gailly와 Mark Adler 에의해개발또는라이선스된오픈소스소프트웨어를포함합니다. 오픈소스소프트웨어와개발자에대해경의를표합니다. 관련상세정보는제품의디렉터리 ${INSTALL_PATH/license/oss_licenses 에기재된사항을참고해주십시오. 안내서정보안내서제목 : Tmax JTmaxServer User Guide 발행일 : 2009-08-10 소프트웨어버전 : Tmax v5.0 SP1 안내서버전 : v2.1.1
내용목차 안내서에대하여... vii 제1장 소개... 1 1.1. 환경구성... 1 1.2. 설정... 1 1.2.1. Tmax 설정... 1 1.2.2. JTmaxServer 설정... 2 1.3. API... 2 1.3.1. JTmaxServer... 2 1.3.2. JTmaxResult... 3 1.3.3. JTmaxEventHandler... 3 제2장 예제... 5 2.1. Tmax 설정... 5 2.2. 클라이언트사용... 5 2.3. JTmax 서버사용... 7 Tmax iii
그림목차 [ 그림 1.1] JTmax 서버환경구성... 1 Tmax v
안내서에대하여 안내서의대상 본안내서는 Tmax ( 이하 Tmax) 에서제공하는 JTmax 서버를사용하는개발자를위해기술되었다. 본안내서는 Tmax에서제공하는 JTmax 서버를사용하는개발자를위해기술된안내서로환경구성방법, 환경설정방법, API와예제에대해서기술한다. 안내서의전제조건 본안내서는 Tmax 시스템에대한전반적인이해와 Tmax 시스템이제공하는각종기능및특성에대한습득을위한기본서이다. 본안내서를원활하게이해하기위해서는다음과같은사항을미리알고있어야한다. 미들웨어 (Middleware) 및 UNIX 시스템에대한이해 Tmax 의기본개념이해 Java, C 프로그래밍의이해 안내서의제한조건 본안내서를읽기전에 Tmax 의기본개념을숙지하고있어야한다. 실무에서의구체적인사용방법이나 관리및운용에관한사항은각제품의안내서를참고한다. 참고 Tmax 시스템개발에대한기본적인내용은 "Tmax Administration Guide" 나 "Tmax Application Devel oment Guide" 를참고한다. Tmax에서제공하는명령어와 C API에대한설명은 Tmax Reference Guide 를참고한다. 안내서에대하여 vii
안내서구성 Tmax JTmaxServer User Guide는총 2개의장으로구성되어있다. 각장의주요내용은다음과같다. 제1장 : 소개 JTmax 서버의소개및환경구성, 설정에대해기술한다. 제 2 장 : 예제 JTmax 서버사용예제에대해기술한다. viii Tmax JTmaxServer User Guide
안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고 의미프로그램소스코드의파일명 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한설명메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 [ ] 옵션인수값 선택인수값 안내서에대하여 ix
시스템사용환경 요구사항 Platform IBM AIX 5.x HP-UX 11.xx Solaris 7~9 (SunOS 5.7~5.9) Hardware 최소 120MB 하드디스크공간 256MB 이상메모리공간 1GB 이상하드디스크와 512MB 이상메모리공간권장 Database Oracle 9i 또는 10g x Tmax JTmaxServer User Guide
관련안내서 안내서 Tmax Administration Guide 설명 Tmax 를이용하기위한환경설정을하는방법과시스템운영방식을 기술한안내서이다. 안내서에대하여 xi
연락처 Korea TmaxSoft Co., Ltd 263 BundangSquare (AK Plaza) 12th floor, Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, 463-824 South Korea Tel: +82-31-8018-1000 Fax: +82-31-8018-1115 Email: info@tmax.co.kr Web (Korean): http://www.tmax.co.kr 기술지원 : http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632 U.S.A Tel: 1-201-567-8266 Fax: 1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info.jp@tmaxsoft.com Web (Japanese): http://www.tmaxsoft.co.jp xii Tmax JTmaxServer User Guide
China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027 China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn ASEAN Office TmaxSoft Pte. Ltd. 30 Cecil Street, Level 15 Unit 05 Prudential Tower, Singapore 049712 Singapore Tel: +65-6232-2889 Fax: +65-6232-2919 Email: info.asean@tmaxsoft.com Web (English): http://asean.tmaxsoft.com 안내서에대하여 xiii
제 1 장소개 1.1. 환경구성 Tmax 서버에있는서비스가아닌 Java로이루어진애플리케이션의서비스를 Tmax 클라이언트혹은서버가호출하는환경에서사용한다. 반드시 Tmax는 Async Java gateway를사용해야한다. 다음은 JTmax 서버환경구성에대한그림이다. [ 그림 1.1] JTmax 서버환경구성 위그림처럼 Java gateway는 Tmax가시작할때 JTmax 서버에연결을시도한다. 연결이이루어지지않는다면 Java gateway를통해서호출할서비스가요청이생기면그때다시연결을시도한다. JTmax 서버는애플리케이션에서객체를생성하여필요할때조작을통하여라이프사이클을관리할수있으며 callback interface를구현하여서비스요청을제어할수있다. 1.2. 설정 1.2.1. Tmax 설정 Tmax 에서는 JTmax 서버와연결하기위해 Async Java gateway 를다음과같이설정한다. *SERVICE JTMAXSERVICE SVRNAME = javagw *GATEWAY javagw GWTYPE = JEUS_ASYNC, PORTNO = 11100, RGWADDR = "192.168.11.20", RGWPORTNO = 9669, 제 1 장소개 1
BACKUP_RGWADDR = "192.168.11.21", BACKUP_RGWPORTNO = 9669, CLOPT = "-r ", NODENAME = tmax, CPC = 1 GATEWAY 절에 gateway를생성한다. 반드시 type은 JEUS_ASYNC로해야한다. Java gateway 입장에서 inbound의경우 listen할 port는 PORTNO이며 outbound의경우접속할 ip, port는 RGWADDR,RGW PORTNO이고 backup 시도할때에는 BACKUP_RGWADDR, BACKUP_RGWPORTNO로연결을맺는다. JTmaxServer에는 maxclh*cpc 수의연결이맺어진다. SERVICE 절에위와같이 SVRNAME을게이트웨이이름으로하고서비스를정의한다. 1.2.2. JTmaxServer 설정 특별히파일에의한설정은필요없으나로그를남길경우 FDL 처리하는경우에는설정을해야한다. log.level=info log.bufsize=1024 log.dir=/logs/jtmaxserver log.file=jtmaxserver.log fdl.file=/fdl/tmax.fdl 파일의위치는애플리케이션을실행할때 "-Dwebt.properties= 절대경로 " 로정의한다. log.level 은 none < info < debug 가있다. 1.3. API 기본적인데이터사용은 "Tmax WebT User Guide" 를참조한다. (WebtBuffer, WebtSetringBuffer, WebtCarrayBuffer, WebtFieldBuffer ) 1.3.1. JTmaxServer Tmax의 Async Java gateway 에서의요청을처리하기위한클래스이다. 사용자는 JTmaxEventHandler를구현하여요청이들어오면처리할수있도록한다. 사용방법은다음과같다. JTmaxServer server = new JTmaxServer("jtmaxserver1", 6555, 10, new SampleHandler()); try { 2 Tmax JTmaxServer User Guide
server.startserver(); catch (IOException e) { error 처리... 1.3.2. JTmaxResult JTmaxEventHandler 에서요청된처리결과를저장하는클래스이다. 서비스의성공여부, 에러코드, 반환 할데이터에대한정보를가질수있다. 1.3.3. JTmaxEventHandler 서비스요청처리를위해사용자가구현해야할인터페이스이다. tpcall, tpacall 에대한처리뿐만아니라 트랜잭션처리를위한메소드또한구현해야한다. 제 1 장소개 3
제 2 장예제 다음은예제실행을위한환경에대한설명이다. JTmax 서버가 listen 할주소 : 192.168.11.43:6555 Tmax 구성 : 192.168.11.41:11000 서비스이름 : JTMAXSERVICE 서비스설명 : 동일한버퍼를반환하는서비스이다. 2.1. Tmax 설정 Tmax 의환경구성에아래의값을추가한다. *SERVICE JTMAXSERVICE SVRNAME = javagw *GATEWAY javagw GWTYPE = JEUS_ASYNC, PORTNO = 11000, RGWADDR = "192.168.11.43", RGWPORTNO = 6555, CLOPT = "-r ", NODENAME = 노드명, CPC = 1 2.2. 클라이언트사용 package test.jtmax.jg; import tmax.webt.webtbuffer; import tmax.webt.webtconnection; import tmax.webt.webtremoteservice; import tmax.webt.webttransaction; public class WebtClient { private String ip; 제 2 장예제 5
private int port; private String svcname; private WebtConnection conn; public WebtClient(String ip, int port, String svcname) { this.ip = ip; this.port = port; this.svcname = svcname; conn = new WebtConnection(this.ip,this.port); public void tpcall() { WebtRemoteService service = new WebtRemoteService(svcName, conn); WebtBuffer sndbuf = service.createstringbuffer(); sndbuf.setstring("echo String"); WebtBuffer rcvbuf = service.tpcall(sndbuf); System.out.println(rcvBuf); public void tpcalltran() { WebtTransaction tr = new WebtTransaction(conn); WebtRemoteService service = new WebtRemoteService(svcName, conn); WebtBuffer sndbuf = service.createstringbuffer(); tr.begin(); sndbuf.setstring("echo String"); WebtBuffer rcvbuf = service.tpcall(sndbuf); System.out.println(rcvBuf); sndbuf.setstring("echo String2"); rcvbuf = service.tpcall(sndbuf); System.out.println(rcvBuf); tr.commit(); public static void main(string[] args) { WebtClient client = new WebtClient("192.168.11.41",11000,"JTMAXSERVICE"); client.tpcall(); client.tpcalltran(); 6 Tmax JTmaxServer User Guide
2.3. JTmax 서버사용 package test.jtmax.jg; import java.io.ioexception; import javax.transaction.xa.xaresource; import javax.transaction.xa.xid; import tmax.webt.webtbuffer; import com.tmax.nio.util.jtmaxeventhandler; import com.tmax.nio.util.jtmaxresult; import com.tmax.nio.util.jtmaxserver; public class JTmaxSimpleServer implements JTmaxEventHandler{ public JTmaxSimpleServer() { public Xid[] recover() { return null; public JTmaxResult serviceexecute(xid xid, String servicename, WebtBuffer rcvbuffer) { System.out.println("service execute : "+xid+","+servicename+","+rcvbuffer); return new JTmaxResult(JTmaxResult.TPSUCCESS,0,rcvBuffer); public JTmaxResult xacommit(xid xid, boolean isonephrase) { System.out.println("xa commit : "+xid+","+isonephrase); return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null); public JTmaxResult xaprepare(xid xid) { System.out.println("xa prepare : "+xid); return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null); 제 2 장예제 7
public JTmaxResult xarollback(xid xid) { System.out.println("xa rollback : "+xid); return new JTmaxResult(JTmaxResult.TPSUCCESS,XAResource.XA_OK,null); public static void main(string[] args) { JTmaxSimpleServer server = new JTmaxSimpleServer(); server.startserver("jtmax",6555,10); private void startserver(string name, int port, int maxconnection) { JTmaxServer server = new JTmaxServer(name, port, maxconnection, this); try { server.startserver(); catch (IOException e) { e.printstacktrace(); return; try { System.in.read(); catch (IOException e) { e.printstacktrace(); try { server.stopserver(); catch (IOException e) { e.printstacktrace(); 8 Tmax JTmaxServer User Guide