JTC 클래스와 함수
본 장에서는 JTC의 클래스와 함수에 대해 설명한다.
1. 개요
다음은 JTC가 제공하는 클래스 목록이다.
클래스 | 설명 |
---|---|
Tuxedo의 서비스를 수행하기 위한 함수를 제공하는 클래스이다. |
|
Async Listener 구조를 지원하기 위한 TuxService의 상속 클래스이다. |
|
클러스터 도메인에서 서비스를 호출하기 위한 클래스이다. |
|
Tuxedo와 데이터를 주고받기 위해 사용되는 Tuxedo 데이터 버퍼들의 상위 클래스이다. |
|
String/Byte 배열 데이터를 사용하는 데 필요한 버퍼를 생성하는 클래스이다. |
|
Tuxedo의 FML / FML32 버퍼를 사용하기 위한 데이터 클래스이다. |
|
FML을 주고받는 서비스의 기본 JAVA Bean Class를 생성할 수 있는 유틸리티이다. |
다음 절에서 각 클래스와 클래스에서 제공하는 함수에 대해 설명한다.
2. TuxService
Tuxedo의 서비스를 수행하기 위한 함수를 제공하는 클래스로, 모든 통신이 TuxService를 통해 이루어진다.
다음은 TuxService 클래스에서 제공하는 함수에 대한 설명이다.
함수 | 설명 |
---|---|
Tuxedo와의 통신에 사용할 수 있는 Byte 배열 타입 버퍼를 생성한다. |
|
Tuxedo와의 통신에 사용할 수 있는 FML 버퍼를 생성한다. |
|
Tuxedo와의 통신에 사용할 수 있는 String 타입 버퍼를 생성한다. |
|
서비스에 적용할 사용자 flags를 설정한다. |
|
String 데이터를 사용하는 경우 Byte 배열 ↔ String으로 인코딩 및 디코딩하는 캐릭터 셋을 지정한다. |
|
TuxService 인스턴스의 기본 서비스 이름을 변경한다. |
|
비동기형 방식으로 Tuxedo의 서비스를 호출한다. |
|
동기형 방식으로 Tuxedo의 서비스를 호출한다. |
|
Tuxedo 대화형 통신을 설정한다. |
|
Tuxedo 대화형 통신을 해제한다. |
|
tpacall에 대한 응답을 받아온다. |
|
설정된 대화형 서비스를 통해 메시지를 수신한다. |
|
설정된 대화형 서비스를 통해 메시지를 송신한다. |
|
TuxService를 생성한다. |
2.1. createCarrayBuffer
Tuxedo와의 통신에 사용할 수 있는 Byte 배열 타입 버퍼를 생성하는 함수이다.
-
프로토타입
public TuxBuffer createCarrayBuffer([int size])
-
파라미터
파라미터 설명 size
createCarrayBuffer로 생성할 CarryBuffer의 크기이다.
-
반환값
TuxBuffer를 반환한다.
2.2. createFieldBuffer
Tuxedo와의 통신에 사용할 수 있는 FML 버퍼를 생성하는 함수이다.
-
프로토타입
public TuxBuffer createFieldBuffer([boolean isFML32, [int size,]] TuxFieldTable table)
-
파라미터
파라미터 설명 isFML32
다음 값 중 원하는 값을 지정한다.
-
True: FML32를 사용하는 경우
-
False: FML16을 사용하는 경우
size
createFieldBuffer로 생성할 FieldBuffer의 크기이다.
table
TuxFieldGen()을 이용하여 생성된 테이블 클래스이다.
-
-
반환값
TuxBuffer를 반환한다.
-
예제
java -cp ..\webtJtc.jar tmax.webt.util.TuxFieldGen -32 com.tys.sde.wtc anta.fld package com.tys.sde.wtc; import tmax.webt.util.TuxFieldTable; public class anta.fld implements TuxFieldTable { public static final int ftp_hostdir = 167804166; public static final int ftp_filename = 167804165; public static final int ftp_dir = 167804164; public static final int ftp_pswd = 167804163; public static final int ftp_id = 167804162; public static final int ftp_svr = 167804161; public static final int split_filename = 167807162; public static final int split_data = 167807161; public static final int carray01 = 201349593; public static final int string99 = 167792259; public static final int string98 = 167792258; public static final int string97 = 167792257; public static final int string96 = 167792256; public static final int string93 = 167792253; } javac -classpath .;webtJtc.jar;sdeLib.jar;%JEUS_HOME%/lib/ system/jeus.jar WTCService.java 2> err
2.3. createStringBuffer
Tuxedo와의 통신에 사용할 수 있는 String 타입 버퍼를 생성하는 함수이다.
-
프로토타입
public TuxBuffer createStringBuffer([int size])
-
파라미터
파라미터 설명 size
createStringBuffer로 생성할 StringBuffer의 크기이다.
-
반환값
TuxBuffer를 반환한다.
2.4. setAttribute
서비스에 적용할 사용자 flags를 설정하는 함수이다.
-
프로토타입
public void setAttribute(int attr, boolean value)
-
파라미터
파라미터 설명 attr
대상 flags의 값이다.
value
WebtAttribute의 설정 및 해제 여부를 설정한다.
-
True: WebtAttribute를 설정한다.
-
False: WebtAttribute를 해제한다.
-
2.5. setDefaultCharset
String 데이터를 사용하는 경우 Byte 배열 ↔ String으로 인코딩 및 디코딩하는 캐릭터 셋을 지정하는 함수이다.
ISO-8859-1, UFT-8, EUC-KR 등 원하는 캐릭터 셋을 지정할 수 있으며 지정하지 않으면 Java 기본값인 ISO-8859-1로 지정된다. 반드시 버퍼를 생성하기 전에 값을 설정해야 한다.
-
프로토타입
public void setDefaultCharset(String charset)
-
파라미터
파라미터 설명 charset
인코딩할 캐릭터 셋 값이다. (기본값: ISO-5589-1)
-
예제
TuxService service = new TuxService("SAMPLE", "TUXDOM"); service.setDefaultCharset("ISO-8859-1"); TuxBufferImpl buf = service.createStringBuffer(); // ISO-8859-1 service.setDefaultCharset("ISO-8859-2"); TuxBufferImpl buf2 = service.createStringBuffer(); // ISO-8859-2
2.6. setServiceName
TuxService 인스턴스의 기본 서비스 이름을 변경하는 함수이다.
-
프로토타입
public void setServiceName(String serviceName)
-
파라미터
파라미터 설명 serviceName
호출할 Tuxedo의 서비스명이다.
-
예제
TuxService service = new TuxService("SAMPLE", "TUXDOM"); Service.tpcall(buf);// calls “SAMPLE” service service.setServiceName ("SAMPLE2"); Service.tpcall(buf);// calls “SAMPLE2” service
2.7. tpacall
비동기형 방식으로 Tuxedo의 서비스를 호출하는 함수이다. 클라이언트는 서비스를 호출한 뒤 해당 서비스 호출에 대한 핸들러 값을 받아오게 되며 이 핸들러를 이용하여 언제든지 결과값을 받아올 수 있다.
-
프로토타입
public TuxCallDescripter tpacall([String svcname,] TuxBuffer input [, WebtAttribute attr])
-
파라미터
파라미터 설명 svcname
Tuxedo의 서비스명이다.
input
요청할 TuxBuffer 타입의 버퍼이다.
attr
서비스의 속성값이다.
-
반환값
TuxCallDescripter를 반환한다.
2.8. tpcall
동기형 방식으로 Tuxedo의 서비스를 호출하는 함수이다. 클라이언트는 지정된 시간까지 블록된 상태로 결과값을 기다리게 된다. TuxService 인스턴스를 생성할 때 설정한 기본 서비스 이외의 서비스를 호출하고자 하는 경우 서비스명을 지정해 줄 수 있다.
-
프로토타입
public TuxBuffer tpcall(String svcname, TuxBuffer input[[, WebtAttribute attr], int timeout])
-
파라미터
파라미터 설명 svcname
Tuxedo의 서비스명이다.
input
요청할 TuxBuffer 타입의 버퍼이다.
timeout
서비스를 요청할 때 최대 수행시간이다.
-
반환값
TuxBuffer를 반환한다.
-
예제
try { TuxBufferImpl rcvbuf = service.tpcall(sndbuf); out.println(rcvbuf.getString()); } catch (WebtException e) { e.printStackTrace(); out.println("error Occurred"); return; }
2.9. tpconnect
Tuxedo 대화형 통신을 설정하는 함수이다.
-
프로토타입
public TuxCallDescripter tpconnect([TuxBuffer sndbuf,] [WebtAttribute attr,] boolean recvNext)
-
파라미터
파라미터 설명 sndbuf
요청할 TuxBuffer 타입의 버퍼이다.
attr
서비스의 속성값이다.
recvNext
다음 값 중 원하는 값을 지정한다.
-
True: 다음 응답을 받는다.
-
False: 응답을 한 번만 받는다.
-
-
반환값
TuxCallDescripter를 반환한다.
2.10. tpdiscon
Tuxedo 대화형 통신을 해제하는 함수이다.
-
프로토타입
public void tpdiscon(TuxCallDescripter cd)
-
파라미터
파라미터 설명 cd
tpconnect()의 수행을 통해 반환된 핸들러 값이다.
2.11. tpgetrply
tpacall에 대한 응답을 받아오기 위한 함수이다.
-
프로토타입
public TuxBuffer tpgetrply(TuxCallDescripter cd[, WebtAttribute attr] [, int timeout])
-
파라미터
파라미터 설명 cd
tpacall()의 정상적인 수행을 통해 반환된 핸들러 값이다.
attr
서비스의 속성값이다.
timeout
서비스를 요청할 때 최대 수행시간이다.
-
반환값
TuxBuffer를 반환한다.
-
예제
TuxService service = new TuxService("READDATA", "TUXDOM"); TuxBufferImpl sndbuf = service.createCarrayBuffer(); sndbuf.setBytes(toconv); try { TuxCallDescripter cd = service.tpacall(sndbuf); TuxBufferImpl rcvbuf = service.tpgetrply(cd); out.println(rcvbuf.getString()); } catch (WebtException e) { e.printStackTrace(); out.println("error Occurred"); return; }
2.12. tprecv
설정된 대화형 서비스를 통해 메시지를 수신하는 함수이다.
-
프로토타입
public TuxBuffer tprecv(TuxCallDescripter cd[,WebtAttribute attr])
-
파라미터
파라미터 설명 cd
tpacall() 함수의 정상적인 수행에 대해 반환된 핸들러 값이다.
attr
서비스의 속성값이다.
-
반환값
TuxBuffer를 반환한다.
-
예제
TuxService service = new TuxService("TMXDOM","TOUPPER_CONVN"); TuxBuffer sndbuf = service.createStringBuffer(); sndbuf.setString("conversation service"); TuxCallDescripter cd = service.tpconnect(false); if(cd == null) { out.println("tpconnect failed!"); } else { service.tpsend(cd, sndbuf, true); WebtAttribute attr = new WebtAttribute(); attr.setTPNOTIME(true); if(service.isRecvNext()) { TuxBuffer rcvbuf = service.tprecv(cd,attr); } } service.tpdiscon(cd);
2.13. tpsend
설정된 대화형 서비스를 통해 메시지를 송신하는 함수이다.
-
프로토타입
public void tpsend(TuxCallDescripter cd,TuxBuffer tx[, WebtAttribute attr], boolean recvNext)
-
파라미터
파라미터 설명 cd
tpacall() 함수의 정상적인 수행에 대해 반환된 핸들러 값이다.
tx
요청할 TuxBuffer 타입의 버퍼이다.
attr
서비스의 속성값이다.
recvNext
다음 값 중 원하는 값을 지정한다.
-
True: 다음 응답을 받는다.
-
False: 응답을 한 번만 받는다.
-
3. TuxAsyncService
Async listener 구조를 지원하기 위한 TuxService의 상속 클래스로 TuxAsyncService에서 제공하는 함수는 다음과 같다.
함수 | 설명 |
---|---|
XA Resource를 생성한다. |
|
비동기형 방식으로 Tuxedo의 서비스를 호출한다. |
|
TuxService를 생성한다. |
다음은 TuxAsyncService를 이용한 Async listener 구조의 사용 예제이다.
TmaxXid xid = new TmaxXid(1,4,0); TuxAsyncService service = new TuxAsyncService("TUXGW1","TUX_INSERT"); try { service.getXAResource().start(xid, 0); } catch (XAException e) { // TODO Auto-generated catch block e.printStackTrace(); } TuxBuffer input = service.createStringBuffer(); input.setString("abc"); TuxAsyncMsgListener listener = new TestMsgListener(service, xid); service.tpacall(input, null, listener );
다음은 TuxAsyncService을 사용하여 TuxAsyncMsgListener를 구현하는 예제이다. TuxAsyncMsgListener 인터페이스는 void handleEvent(TuxBuffer rcvBuffer)와 void handleError(Exception e) 메소드를 가지고 있다. 이 메소드에 수신 동작을 구현한다.
public class TestMsgListener implements TuxAsyncMsgListener { TuxAsyncService service; Xid xid; public TestMsgListener(TuxAsyncService service, Xid xid) { this.service = service; this.xid = xid; } public void handleError(Exception e) { System.out.println(e); } public void handleEvent(TuxBuffer rcvBuffer) { System.out.println(Thread.currentThread().getName() +" ] rcv " + rcvBuffer); try { service.getXAResource().prepare(xid, new TestTuxPrepareMsgListener(service,xid)); } catch (XAException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
3.1. getXAResource
XA Resource를 생성하는 함수이다.
-
프로토타입
public TuxAsyncXAResource getXAResource()
-
반환값
TuxAsyncXAResource를 반환한다.
Async Listener를 위해 TuxAsyncXAResource에 추가 구현된 메소드들은 다음과 같다.
public int prepare(Xid xid, TuxAsyncMsgListener listener) public void commit(Xid xid, TuxAsyncMsgListener listener) public void rollback(Xid xid, TuxAsyncMsgListener listener)
3.2. tpacall
비동기형 방식으로 Tuxedo의 서비스를 호출한다. TuxAsyncMsgListener 인터페이스는 void handleEvent(TuxBuffer rcvBuffer)와 void handleError(Exception e) 메소드를 가지고 있다. 이 메소드에 수신 동작을 구현한다. tpacall에 응답을 처리하기 위한 Listener를 파라미터로 추가한다.
-
프로토타입
public TuxCallDescripter tpacall(TuxBuffer input, WebtAttribute attr, TuxAsyncMsgListener listener)
-
파라미터
파라미터 설명 input
요청할 TuxBuffer 타입의 버퍼이다.
attr
서비스의 속성값이다.
listener
수신 메시지의 동작이 구현된 객체이다.
-
반환값
TuxCallDescripter를 반환한다.
4. TuxRemoteServiceManager
JTC 클러스터를 사용할 때에는 효율적인 호출을 위해 이 클래스의 API를 사용한다. 이 클래스는 어떤 서비스를 호출할 때 맞는 리모트 도메인을 통해 호출하도록 동작한다.
기존과 같이 TuxService를 통해서 호출할 경우에는 매번 다른 도메인으로 호출될 수 있다. TuxedoRemoteServiceManager를 통해 서비스를 호출할 경우 한 서비스가 특정 리모트 도메인을 통해 호출되기 시작하면 그 이후로는 그 서비스는 항상 같은 도메인을 통해서 호출된다.
다음은 TuxRemoteServiceManager에서 제공하는 함수에 대한 설명이다.
함수 | 설명 |
---|---|
클래스의 생성자이다. |
|
Tuxedo와의 통신에 사용할 수 있는 String 형 버퍼를 생성한다. |
|
Tuxedo와의 통신에 사용할 수 있는 Byte 배열형 버퍼를 생성한다. |
|
Tuxedo와의 통신에 사용할 수 있는 필드형 버퍼를 생성한다. |
|
Tuxedo 서비스를 호출한다. |
4.1. TuxedoRemoteServiceManager
TuxedoRemoteServiceManager 클래스를 생성한다.
-
프로토타입
Public TuxedoRemoteServiceManager()
4.2. createStringBuffer
Tuxedo와의 통신에 사용할 수 있는 String 형 버퍼를 생성하는 함수로 동작은 TuxService 클래스의 createStringBuffer 함수와 동일하다.
-
프로토타입
Public TuxBuffer createStringBuffer([int size])
-
반환값
TuxBuffer를 반환한다.
4.3. createCarrayBuffer
Tuxedo와의 통신에 사용할 수 있는 Carray 형 버퍼를 생성하는 함수로 동작은 TuxService 클래스의 createCarrayBuffer 함수와 동일하다.
-
프로토타입
Public TuxBuffer createCarrayBuffer([int size])
-
반환값
TuxBuffer를 반환한다.
5. TuxBuffer
Tuxedo와 데이터를 주고받기 위해 사용되는 Tuxedo 데이터 버퍼들의 상위 클래스이다. 특별한 함수는 제공하지 않으며 하위 데이터 버퍼 클래스들에 대한 인터페이스를 제공한다. Tuxedo 데이터 버퍼는 TuxService 인스턴스의 메소드를 이용하거나 WebtBuffer 클래스의 Static 메소드를 이용하여 생성한다.
6. TuxStringBuffer/TuxCarrayBuffer
각각 String / Byte 배열 데이터를 사용하기 위한 버퍼이다.
다음은 TuxStringBuffer/TuxCarrayBuffer가 제공하는 함수에 대한 설명이다.
함수 | 설명 |
---|---|
저장된 String 값을 Byte 배열 값으로 변환하여 읽어온다. |
|
저장되어 있는 String 값을 읽어온다. |
|
Byte 배열 값을 저장한다. |
|
String 값을 저장한다. |
6.1. getBytes
저장된 String 값을 Byte 배열 값으로 변환하여 읽어오는 함수이다.
-
프로토타입
public byte[] getBytes()
-
반환값
저장되어 있는 String 값을 Byte 배열로 변환하여 반환한다.
6.2. getString
저장되어 있는 String 값을 읽어오는 함수이다.
-
프로토타입
public String getString([String charset])
-
파라미터
파라미터 설명 charset
인코딩을 위한 캐릭터 셋을 지정할 수 있으며 필요하지 않은 경우 NULL을 설정한다.
-
반환값
저장되어 있는 String 값을 반환한다.
7. TuxFieldBuffer
Tuxedo의 FML / FML32 버퍼를 사용하기 위한 데이터 클래스이다. TuxFieldBuffer는 버퍼 내부에 고유의 키값과 키 이름을 갖는 여러 개의 필드를 가지며 각 필드는 다시 여러 개의 값을 가질 수 있다. 사용자는 값을 저장하기 위해서 실제로 값을 넣을 수 있는 필드를 먼저 생성해야 한다.
String 또는 Byte 배열을 저장하는 타입과 숫자형을 저장하는 타입으로 구분되며 필드의 타입과 다른 타입의 데이터 저장을 시도하는 경우 WebtBufferException이 발생한다.
다음은 TuxFieldBuffer가 제공하는 함수에 대한 설명이다.
함수 | 설명 |
---|---|
TuxFieldBuffer 내에 새 필드를 생성한다. |
|
키값에 해당하는 필드를 반환한다. |
|
필드 버퍼 내에 있는 모든 필드를 Vector로 반환한다. |
7.1. createField
TuxFieldBuffer 내에 새 필드를 생성하는 함수이다.
-
프로토타입
public WebtField createField(int fldkey|string fldkey)
-
파라미터
파라미터 설명 int fldkey
생성할 int 형 필드키 값이다.
string fldkey
생성할 String 형 필드키 값이다.
-
반환값
키값에 해당하는 필드가 이미 생성되어 있을 경우 이미 생성된 필드를 반환한다.
-
예제
Table table = new Table() TuxBufferImpl buf = WebtBuffer.createTuxFieldBuffer(true, table); // field key 값이 INT1인 WebtField 객체를 생성한다. WebtField field1 = buf.createField(table.INT1); // field key 이름이 "INT2" 인 WebtField 객체를 생성한다. WebtField field2 = buf.createField("INT2");
7.2. getField
키값에 해당하는 필드를 반환하는 함수이다.
-
프로토타입
public WebtField getField(int fldkey|string fldkey)
-
파라미터
파라미터 설명 int fldkey
반환된 Tuxbuffer로부터 읽을 int 형 필드키 값이다.
string fldkey
반환된 Tuxbuffer로부터 읽을 String 형 필드키 값이다.
-
반환값
키값에 해당하는 필드를 반환한다. 필드가 존재하지 않을 경우 NULL을 반환한다.
7.3. getFields
필드 버퍼 내에 있는 모든 필드를 Vector로 반환하는 함수이다.
-
프로토타입
public Vector getFields()
-
반환값
필드 버퍼 내에 있는 모든 필드를 Vector로 반환한다.
-
예제
Table table = new Table(); TuxBufferImpl buf = WebtBuffer.createTuxFieldBuffer(true, table); WebtField field = buf.createField(table.INPUT); field.add("VALUE1"); field.add("VALUE2"); field.add("VALUE3"); Vector fields = buf.getFields(); String[] fieldValues = (String[])fields.toArray(new String[0]); for (int i=0; i++; i<fieldValues.length) { System.out.prinln("Value[" + i + "] : " + fieldValues[i]);
8. TuxFMLBeanGen
JAVA 사용자의 편의를 위해서 서비스에 있는 request/reply 메시지 타입이 FML일 경우 기본 JAVA Bean Class를 생성할 수 있는 유틸리티이다.
-
사용법
java -cp webt*.jar tmax.jtc.util.TuxFMLBeanGen -f 서비스정의파일[,서비스정의파일] -m fml파일[,fml파일] -o 생성디렉터리 [-s 서비스[,서비스]] [-p 패키지이름]
-
파라미터
파라미터 설명 -f 서비스정의파일[,서비스정의파일]
서비스 정의 파일 리스트이다. 여러 파일을 함께 입력할 수 있다.
-m fml파일[,fml파일]
사용할 FML 파일이다.
-o 생성디렉터리
결과물인 Java 파일이 만들어질 디렉터리이다.
-s 서비스[,서비스]
서비스 정의 파일에 있는 서비스 중 Java 소스로 변환을 원하는 서비스 이름 리스트이다. 여러 개를 입력하는 경우 공백 없이 콤마(,)로 구분하여 나열한다.
-p 패키지이름
생성된 파일이 속할 패키지 이름이다.
-
서비스 정의 파일 형식
*서비스이름 *request FIELDNAME1 FIELDNAME2 *reply FIELDNAME3 FIELDNAME4 반복...
한 파일에 여러 개의 서비스를 정의할 수 있다. request는 서비스로 요청하는 메시지 구성이며, reply에서 서비스에서 tpreturn에 의해 전달되어지는 메시지 구성이다.
-
변환된 Java 파일
사용자가 입력한 서비스 이름으로 request와 reply 두 개 파일을 생성한다.
-
서비스이름+RequestBean.java
-
서비스이름+ReplyBean.java
각 필드값과 메소드는 다음과 같다.
구분 설명 필드값
public type 필드명으로 필드값을 정의한다.
getter/setter
-
public type get필드명
-
public set필드명(type)
-
-