제3장 WebT API

내용 목차

3.1. 개요
3.2. 연결 관련 클래스
3.2.1. WebtConnection
3.2.2. WebtConnectionPool
3.2.3. WebtConnectionGroup
3.3. 서비스 호출 데이터 관련 클래스
3.3.1. WebtAttribute
3.3.2. WebtBuffer
3.3.3. WebtCarrayBuffer/WebtStringBuffer
3.4. 서비스 호출 관련 클래스
3.4.1. WebtRemoteService
3.4.2. WebtRQService
3.4.3. WebtDialogueService
3.5. 필드 데이터 관련 클래스
3.5.1. WebtFieldElement
3.5.2. WebtFDLKeyTable
3.5.3. WebtFieldSet
3.5.4. WebtField
3.5.5. WebtFieldBuffer
3.6. 이벤트 메시지 처리 관련 클래스
3.6.1. WebtEventConnecion
3.6.2. WebtEventHandler
3.7. 그 외의 클래스
3.7.1. WebtTransaction
3.7.2. WebtSystem

본 장에서는 WebT에서 Tmax 서버에 연결하고 서비스를 호출하는 등의 동작을 수행하기 위해 필요한 클래스와 각 클래스에서 사용할 수 있는 필드 및 메소드에 대해 설명한다.

3.1. 개요

다음은 WebT에서 Tmax 서버에 연결하고 서비스를 호출하는 등의 동작을 수행하기 위해 필요한 클래스의 목록이다. 각 클래스에 대한 상세한 설명은 각 절을 참고한다.

  • 서비스 호출 데이터 관련 클래스

    클래스설명
    WebtAttributeTmax 서버로 WebtRemoteService의 TP 함수를 호출할 때 사용할 flag 정보를 가지고 있는 클래스이다.
    WebtBufferWebT와 Tmax 서버 사이에 주고받는 사용자 데이터를 관리한다.
    WebtCarrayBufferWebtBuffer를 상속받은 클래스로 CARRAY 타입의 데이터를 갖는 클래스이다.
    WebtStringBufferWebtBuffer를 상속받은 클래스로 STRING 타입의 데이터를 갖는 클래스이다.
  • 서비스 호출 관련 클래스

    클래스설명
    WebtRemoteServiceWebtConnection 클래스 및 그 자식 클래스를 통해 API를 제공하고 Tmax 서비스를 호출할 때 필요한 속성 및 서비스명 등을 관리한다.
    WebtRQServiceWebtRemoteService를 상속받은 클래스로 RQ를 관리하는 서비스를 사용하기 위한 클래스이다.
    WebtDialogueServiceWebtRemotedService를 상속받은 클래스로 대화형 서비스를 제공한다.
  • 필드 데이터 관련 클래스

    클래스설명
    WebtFieldElementWebtField의 필드 키(field key)에 대한 필드 데이터(field data)를 담는 인터페이스이다.
    WebtFDLKeyTableTmax 서비스를 호출할 때 사용하는 버퍼의 타입이 WebtBuffer.BT_FIELD인 경우에 필드 키를 관리한다.
    WebtFieldSetTmax 서비스에 사용할 버퍼 타입이 WebtBuffer.BT_FIELD인 경우 필드 데이터의 Element를 편리하게 사용하도록 하는 유틸리티 클래스이다.
    WebtField필드 타입 버퍼에서 사용하는 필드 키 및 그 필드 키 값에 해당하는 다수의 데이터(WebtFieldElement)를 관리하는 추상 클래스이다.
    WebtFieldBufferWebtBuffer의 하위 클래스로 WebtField 타입의 데이터를 가지고 있는 WebtBuffer 객체이다.
  • 이벤트 메시지 처리 관련 클래스

    클래스설명
    WebtEventConnecionTmax 서버나 다른 클라이언트에서 전송한 이벤트 메시지를 처리한다.
    WebtEventHandlerTmax 서버에서 수신한 비요청 메시지를 처리할 때 사용하는 인터페이스이다.
  • 기타 클래스

    클래스설명
    WebtTransaction여러 서비스를 하나의 작업 단위로 묶어서 처리할 수 있도록 API를 제공하고 예외상황의 발생을 처리한다.
    WebtSystemWebT 시스템의 버전, Character Set, 필드 키 테이블 정보를 관리한다.

3.2. 연결 관련 클래스

3.2.1. WebtConnection

Tmax 서버와 WebT 사이의 연결을 담당하는 클래스이다. Tmax 서버가 제공하는 서비스를 이용하려면 반드시 WebtConnection을 사용해 네트워크로 연결을 한 뒤 서비스를 요청해야 한다. WebtConnection 클래스는 Tmax 서버에 접속하기 위한 정보를 설정하고 관리한다.

생성자

WebtConnection의 생성자는 hostAddr 파라미터에 설정된 IP 주소를 가진 Tmax 서버에 hostPort 파라미터에 설정된 포트 번호로 접속하는 커넥션을 생성한다.

다음은 WebtConnection 클래스의 생성자에 대한 설명이다.

  • 생성자1

    • 프로토타입

      WebtConnection(String hostAddr, 
                     int hostPort, 
                     [boolean doConnect,]
                     [int conntimeout])
    • 파라미터

      파라미터설명
      hostAddr연결할 메인 Tmax 서버의 IP 주소이다.
      hostPort연결할 메인 Tmax 서버의 포트 번호이다.
      doConnect

      커넥션을 생성할 때 Tmax 서버에 연결을 시도할 것인지를 설정한다.

      • TRUE: 연결을 시도한다.

      • FALSE: 연결하지 않는다.

      conntimeout

      Tmax 서버에 연결할 때의 타임아웃 시간을 설정한다. (단위: 초)

      시간 내에 연결을 설정하지 못한 경우 tperrno를 TPETIME으로 하는 예외상황을 발생시킨다.

  • 생성자2

    • 프로토타입

      WebtConnection(String hostAddr, 
                     int hostPort, 
                     String backupAddr,
                     int backupPort, 
                     [boolean doConnect,]
                     [int conntimeout])
    • 파라미터

      파라미터설명
      hostAddr연결할 메인 Tmax 서버의 IP 주소이다.
      hostPort연결할 메인 Tmax 서버의 포트 번호이다.
      backupAddrhostAddr:hostPort로 연결이 실패했을 경우 연결할 백업 서버의 IP 주소이다.
      backupPorthostAddr:hostPort로 연결이 실패했을 경우 연결할 백업 서버의 포트 번호이다.
      doConnect

      커넥션을 생성할 때 Tmax 서버에 연결을 시도할 것인지를 설정한다.

      • TRUE: 연결을 시도한다.

      • FALSE: 연결하지 않는다.

      conntimeout

      Tmax 서버에 연결할 때의 타임아웃 시간을 설정한다. (단위: 초)

      시간 내에 연결을 설정하지 못한 경우 tperrno를 TPETIME으로 하는 예외상황을 발생시킨다.

  • 생성자3

    • 프로토타입

      WebtConnection(String hostAddr, 
                     int hostPort, 
                     String username,
                     String userpwd, 
                     String domainname, 
                     String domainpwd)
    • 파라미터

      파라미터설명
      hostAddr연결할 메인 Tmax 서버의 IP 주소이다.
      hostPort연결할 메인 Tmax 서버의 포트 번호이다.
      username사용자 보안 인증을 위한 사용자명이다.
      usernpwd사용자 보안 인증을 위한 사용자 암호이다.
      domainname도메인 보안 인증을 위한 도메인명이다.
      domainpwd도메인 보안 인증을 위한 도메인 암호이다.
  • 예외상황

    예외상황설명
    WebtIOException커넥션을 초기화하는 중에 네트워크 오류가 발생하거나, 타임아웃 시간 내에 서버에 연결을 설정하지 못한 경우에 발생한다.
    WebtServiceException네트워크 입출력이나 트랜잭션 이외의 서비스 오류가 발생한 경우이다.

메소드

다음은 WebtConnection 클래스의 메소드 목록이다.

  • boolean checkConnection(int timeout)

    • 클라이언트의 연결 상태를 체크하는 함수이다.

    • 파라미터

      파라미터설명
      timeout현재 사용하지 않는다.
  • boolean close()

    • Tmax와 소켓 연결을 종료한다. 커넥션이 Connection Pool에서 관리되고 있다면 연결을 종료하지 않고 Connection Pool에 반납해 재사용한다.

  • void connect()

    • Tmax와 연결되어 있지 않으면 연결을 시도한다.

    • 예외상황

      예외상황설명
      WebtIOException연결을 초기화하는 중에 네트워크 오류가 발생하거나 타임아웃 시간 내에 연결을 설정하지 못한 경우에 발생한다.
      WebtServiceException네트워크 입출력이나 트랜잭션 이외의 서비스 오류가 발생한 경우이다.
  • String getAddress()

    • 메인 Tmax 서버의 주소를 반환한다.

  • int getBackupPort()

    • 메인 Tmax 서버의 포트 번호를 반환한다.

  • String getBackupAddress()

    • 백업 Tmax 서버의 주소를 반환한다.

  • String getConnectionId()

    • 커넥션의 ID를 반환한다.

  • String getCurrentHostAddress()

    • 현재 연결되어 있는 Tmax 서버의 IP 주소를 반환한다.

  • int getCurrentHostPortNo()

    • 현재 연결되어 있는 Tmax 서버의 포트 번호를 반환한다.

  • String getDomainName()

    • 메인 Tmax 서버에 연결된 클라이언트의 이름을 반환한다.

  • String getGroupName()

    • 커넥션이 속해 있는 커넥션 그룹의 이름을 반환한다.

  • int getPort()

    • 메인 Tmax 서버의 포트 번호를 반환한다.

  • int getTPtimeout()

    • 현재 설정된 블로킹 타임아웃 시간을 반환한다. (단위: 초)

  • WebtTransaction getTransaction()

    • 커넥션이 사용하고 있는 WebtTransaction 객체를 반환한다.

  • int getTxBlocktimeout()

    • 현재 설정된 트랜잭션의 Commit과 Rollback의 타임아웃 시간을 반환한다.

  • getUserName()

    • 메인 Tmax 서버의 사용자 인증 보안의 계정 이름을 반환한다.

  • boolean isAlive()

    • 커넥션이 활성화되어 있는지 체크한다.

  • void setTPtimeout(int sec)

    • 블로킹 타임아웃 시간을 설정한다. (단위: 초)

  • void setTxBlocktimeout(int txBlockTimeout)

    • 트랜잭션의 Commit과 Rollback의 타임아웃 시간을 설정한다.

  • void setTxtimeout(int txTimeout)

    • 트랜잭션의 타임아웃 시간을 설정한다.

  • void startReader()

    • 커넥션을 통한 메시지 처리 스레드를 시작한다.

  • void stopReader()

    • 커넥션을 통한 메시지 처리 스레드를 종료한다.

예제

다음은 WebtConnection 객체를 이용해 연결을 설정하고 서비스를 얻어 오는 예제이다. 서비스 설정 방법은 “3.4.1. WebtRemoteService”를 참고한다.

...
WebtConnection conn = new WebtConnection("61.77.153.1",8888);
WebtRemoteService svc = new WebtRemoteService("TOUPPER",conn);
...
conn.close()

3.2.2. WebtConnectionPool

WebtConnectionPool은 Tmax서버로의 네트워크 연결인 WebtConnection 객체를 관리한다. WebtConnectionPool 클래스를 이용하면 Tmax 서비스가 요청될 때마다 매번 WebtConnection 객체를 새로 생성하지 않고 이전에 사용한 WebtConnection 객체를 재사용할 수 있으므로 Tmax 서버에 네트워크 연결을 설정하거나 종료하는 데 소비되는 자원과 시간을 절약할 수 있다.

WebtConnectionPool은 다음과 같은 기능을 한다.

  • 하나 이상의 Tmax 서버와 연결된 Connection Pool을 관리할 수 있다.

  • Connection Pool을 모니터링하여 지정된 시간 동안 유휴 상태로 있는 연결을 해재하거나 접속이 종료된 연결을 찾아 새로운 연결을 설정한다.

createGroup

createGroup 메소드는 WebtConnectionGroup 클래스의 객체를 생성한다.

다음은 WebtConnectionGroup 생성 메소드에 대한 설명이다.

  • 생성 메소드1

    • 프로토타입

      public static void createGroup(String groupname, 
                                     String hostAddr, 
                                     int hostPort,
                                     [String username,]
                                     [String userpwd,]
                                     [String domainname,]
                                     [String domainpwd,] 
                                     int init,
                                     int max, 
                                     int inc)
    • 파라미터

      파라미터설명
      groupname커넥션 그룹명이다. 동일한 이름을 가진 커넥션 그룹이 존재할 경우 커넥션 그룹을 생성하지 않는다.
      hostAddr연결을 맺을 Tmax 서버의 호스트명이다.
      hostPort연결을 맺을 Tmax 서버의 포트 번호이다.
      username사용자 보안 인증을 위한 사용자명이다.
      userpwd사용자 보안 인증을 위한 사용자 암호이다.
      domainname도메인 보안 인증을 위한 도메인명이다.
      domainpwd도메인 보안 인증을 위한 도메인 암호이다.
      init커넥션의 초기 연결 개수이다.
      max커넥션의 최대 연결 개수이다.
      inc가용 커넥션이 없는 상태에서 요구가 들어올 때 새로 생성할 커넥션의 개수이다.
  • 생성 메소드2

    • 프로토타입

      public static void createGroup(String groupname,
                                     String hostAddr, 
                                     int hostPort,
                                     String backupAddr, 
                                     int backupPort,
                                     [String username,]
                                     [String userpwd,]
                                     [String domainname,]
                                     [String domainpwd,]
                                     int init, 
                                     int max, 
                                     int inc, 
                                     [int idle])
    • 파라미터

      파라미터설명
      groupname커넥션 그룹명이다. 동일한 이름을 가진 커넥션 그룹이 존재할 경우 커넥션 그룹을 생성하지 않는다.
      hostAddr연결을 맺을 Tmax 서버의 호스트명이다.
      hostPort연결을 맺을 Tmax 서버의 포트 번호이다.
      backupAddr연결을 맺을 Tmax 서버의 백업 호스트명이다.
      backupPort연결을 맺을 Tmax 서버의 백업 포트 번호이다.
      username사용자 보안 인증을 위한 사용자명이다.
      userpwd사용자 보안 인증을 위한 사용자 암호이다.
      domainname도메인 보안 인증을 위한 도메인명이다.
      domainpwd도메인 보안 인증을 위한 도메인 암호이다.
      init커넥션의 초기 연결 개수이다.
      max커넥션의 최대 연결 개수이다.
      inc가용 커넥션이 없는 상태에서 요청이 들어올 때 새로 생성할 커넥션의 개수이다.
      idle

      커넥션에 허용된 최대 idle time이다. (단위: 초)

      WebtConnectionPoolMonitor에서 idle time을 체크할 때 사용한다.

  • 예외상황

    예외상황설명
    WebtIOException커넥션 그룹에서 커넥션의 생성을 실패한 경우 발생한다.
    WebtServiceExceptionConnection Pool의 createGroup 메소드의 파라미터 groupName이 NULL인 경우에 발생한다.
    WebtExceptionWebT를 사용하다 발생하는 예외상황으로 WebtIOException과 WebtServiceException 이외의 예외상황이 모두 WebtException에 포함된다.

메소드

  • public static void destroy()

    • 모든 커넥션 그룹을 제거한다.

  • public static void destroyGroup(String name)

    • 커넥션 그룹명이 파라미터 name과 동일한 커넥션 그룹을 제거한다. 해당 커넥션 그룹에 속해 있는 모든 커넥션의 연결이 종료된다. 또한 해당 커넥션 그룹의 인덱스 번호보다 큰 인덱스 번호를 가진 커넥션 그룹의 인덱스 번호가 1씩 감소한다.

    • 파라미터

      파라미터설명
      name커넥션 그룹명이다.
  • public static void endWait()

    • 커넥션을 계속 유지한다.

  • public static WebtConnection getConnection(String groupname)

    • 커넥션 그룹명이 파라미터 groupname과 동일한 커넥션 그룹에 속한 커넥션을 반환한다. 타임아웃 시간 동안 커넥션을 얻지 못하면 WebtException 예외상황이 발생한다.

    • 파라미터

      파라미터설명
      groupname커넥션 그룹명이다.
    • 예외상황

      예외상황설명
      WebtIOException커넥션 그룹에 사용 가능한 커넥션이 없거나 활성화되어 있지 않은 경우 발생한다.
      WebtServiceException커넥션 그룹명이 NULL이거나 타임아웃 시간을 초과하면 WebtException 예외상황을 발생시킨다.
  • public static WebtConnection getConnection(String groupname, long timeout_mili)

    • 커넥션 그룹명이 파라미터 groupname과 동일한 커넥션 그룹에 속한 커넥션을 반환한다. 파라미터 timeout_mili에 설정된 타임아웃 시간 동안 커넥션을 얻지 못하면 WebtException 예외상황이 발생한다.

    • 파라미터

      파라미터설명
      groupname커넥션 그룹명이다.
      timeout_mili커넥션을 가져올 때의 타임아웃 시간이다. (단위: Millisecond)
    • 예외상황

      예외상황설명
      WebtIOException커넥션 그룹에 사용 가능한 커넥션이 없거나 활성화되어 있지 않은 경우 발생한다.
      WebtServiceException커넥션 그룹명이 NULL이거나 타임아웃 시간을 초과하면 WebtException 예외상황을 발생시킨다.
  • public static WebtConnectionGroup getGroup(String groupname)

    • 파라미터 groupname에 지정한 값과 이름이 동일한 커넥션 그룹을 반환한다. 해당 커넥션 그룹이 존재하지 않을 경우 NULL을 반환한다.

    • 파라미터

      파라미터설명
      groupname커넥션 그룹명이다.
  • public static void startMonitor(int interval, boolean checkAlive, boolean failback)

    • Connection Pool을 모니터링할 스레드를 생성한다. checkAlive와 checkIdle이 모두 FALSE이면 생성하지 않는다.

    • 파라미터

      파라미터설명
      interval모니터링 간격을 설정한다. (단위: 초)
      checkAlive커넥션이 살아있는지 검사하고 끊어진 경우 재연결을 시도한다.
      failbackTrue로 설정하면 메인 서버의 상태를 검사하여 이상이 있을 경우 복구한다.
  • public static void stopMonitor()

    • Connection Pool을 모니터링하는 것을 중지하고 모니터링 스레드를 종료한다.

예제

다음은 2개의 Tmax 서버에서 Connection Pool을 제공할 수 있도록 createGroup 메소드를 사용해 Connection Pool을 초기화하는 예제로 createGroup 메소드의 첫 번째 파라미터인 groupname을 사용해 커넥션을 얻는다.

....
WebtConnectionPool.createGroup("tmax1", "192.168.128.1", 8888,2,10,2);
WebtConnectionPool.createGroup("tmax2", "192.168.128.2", 8888,1,10,2);
....

다음은 위의 예제에서 초기화한 Connection Pool에서 WebtConnection 객체를 가져오는 예제이다.

try {
     // tmax1 group (192.168.128.1:8888 로부터 WebtConnection 객체를 얻는다.)
     WebtConnection con = WebtConnectionPool.getConnection("tmax1");
} catch (WebtIOException wioe) {
     System.out.println("fail to get WebtConnection of tmax1");
     return;
}
WebtRemoteService service = new WebtRemoteService("MYSVC", con);
....
// WebtConnection 객체 반납
WebtConnectionPool.putConnection(con);

3.2.3. WebtConnectionGroup

커넥션을 Pooling하는 기능을 담당하는 추상 클래스이다. 동일한 IP 주소와 포트 번호를 갖는 다수의 커넥션의 Pooling을 관리한다.

생성자

사용자가 직접 WebtConnectionGroup의 객체를 생성할 수는 없고 WebtConnectionPool의 createGroup 생성 메소드를 사용하여 객체를 생성할 수 있다. WebtConnectionGroup의 객체 생성은 “3.2.2. WebtConnectionPool”의 createGroup 설명을 참고한다.

메소드

다음은 WebtConnectionGroup 클래스의 메소드 목록이다.

  • int available()

    • 현재 Connection Pool에 남아 있는 커넥션의 개수를 반환한다.

  • void destroy()

    • 현재 Connection Pool을 제거한다.

  • WebtConnection getConnection()

    • 지정된 타임아웃 시간 동안 커넥션을 얻기 위해 대기하고 사용 가능한 커넥션을 얻으면 반환한다.

      (기본값: 20초)

    • 예외상황

      예외상황설명
      WebtExceptionConnection Pool이 활성화되지 않았거나 지정된 시간에 커넥션을 얻는 데 실패한 경우이다.
  • WebtConnection getConnection(long timeout)

    • 지정된 타임아웃 시간 동안 커넥션을 얻기 위해 대기하고 사용 가능한 커넥션을 얻으면 반환한다.

      (기본값: 20초)

    • 파라미터

      파라미터설명
      timeout커넥션을 얻기 위해 대기하는 시간이다. (단위: Millisecond)
    • 예외상황

      예외상황설명
      WebtExceptionConnection Pool이 활성화되지 않았거나 지정된 시간에 커넥션을 얻는 데 실패한 경우이다.
  • tmax.webt.io.WebtConnectionPoolInfo getConnectionPoolInfo()

    • Connection Pool의 정보를 반환한다.

  • String getName()

    • Connection Pool의 이름을 반환한다.

  • boolean isActive()

    • 현재 Connection Pool이 활성화되었는지를 확인한다.

  • int size()

    • 현재 Pool에서 관리 중인 커넥션의 개수를 반환한다.

3.3. 서비스 호출 데이터 관련 클래스

3.3.1. WebtAttribute

Tmax 서버로 WebtRemoteService의 tpcall(), tpacall(), tpgetrply() 등의 TP 함수를 호출할 때 사용할 flag 정보를 가지고 있는 클래스이다.

생성자

WebtAttribute 객체를 생성한다.

다음은 WebtAttribute 생성자에 대한 설명이다.

  • 생성자1

    • 어떤 속성도 설정되지 않은 WebtAttribute 객체를 생성한다.

    • 프로토타입

      public WebtAttribute()
  • 생성자2

    • flag에 설정된 속성을 가진 WebtAttribute 객체를 생성한다.

    • 프로토타입

      public WebtAttribute(int flag)
    • 파라미터

      파라미터설명
      flagWebtAttribute 클래스의 각 필드를 flag로 사용할 수 있다.

필드

다음은 WebtAttribute 클래스의 필드 목록이다.

  • public static final int TPBLOCK

    • WebtRemoteService.tpacall 메소드를 호출할 때 사용된다.

    • TPBLOCK 속성을 설정하면 서비스나 서버의 이상 유무에 대한 응답을 받을 수 있다. TPBLOCK 속성이 설정되고 WebtRemoteService.tpacall 메소드를 호출하는 데 실패하면 WebtServiceException 또는 WebtIOException이 발생한다.

  • public static final int TPFUNC

    • WebtRQService.tpenq 메소드나 WebtRQService.tpdeq 메소드를 호출할 때 사용된다. TPFUNC 속성은 서비스별 RQ 데이터를 관리할 때 사용된다.

  • public static final int TPGETANY

    • WebtRemoteService.tpgetrply 메소드를 호출할 때 사용된다.

    • TPGETANY 속성이 설정되고 WebtRemoteService.tpgetrply 메소드를 호출할 때 구별자(cd) 값에 일치하는 WebtBuffer가 수신되지 않았다면 tpgetrply의 파라미터로 전달되는 구별자의 값은 무시되고 먼저 수신한 WebtBuffer를 반환한다.

  • public static final int TPNOBLOCK

    • WebtRemoteService.tpgetrply() 메소드에서 주로 사용된다.

    • TPNOBLOCK 속성이 설정되고 TP 메소드를 호출할 때 네트워크가 블록되면 WebtServiceException(tperrno=TPETIME)이 발생한다.

  • public static final int TPNOCHANGE

    • WebtRemoteService의 tpcall 메소드와 tpgetrply 메소드를 호출할 때 사용된다.

    • TPNOCHANGE 속성이 설정되면 tpcall 메소드와 tpgetrply 메소드를 호출할 때 지정한 수신 버퍼 타입과 실제 수신한 WebtBuffer의 타입이 다를 경우 WebtServiceException(tperrno=TPEOTYPE)이 발생한다.

  • public static final int TPNOFLAGS

    • 아무 속성이 설정되어 있지 않음을 의미한다.

  • public static final int TPNOREPLY

    • TPNOREPLY 속성을 설정하면 요청을 보내고 응답을 받지 않겠다는 것을 의미한다. TPNOREPLY 속성이 설정되고 WebtRemoteService.tpacall 메소드가 성공적으로 완료되었다면 구별자로 0이 반환된다. 이 구별자는 WebtRemoteService.tpgetrply 메소드에서 사용할 수 없다.

    • WebtRemoteService.tpacall 메소드가 트랜잭션 상태일 때는 응답을 반드시 받아야 하기 때문에 TPNOREPLY 속성을 사용할 수 없다. 사용하려면 TPNOTRAN과 함께 사용해 트랜잭션의 영역(Transaction Boundary)에서 제외시켜야 한다.

  • public static final int TPNOTIME

    • TPNOTIME 속성을 설정하면 Tmax 서버 설정 파일에 설정된 BLOCKTIME 값이나 WebtConnection.setTPtimeout(int) 메소드에 의해 설정된 블로킹 타임아웃 시간이 무시되고 무한대가 된다. 즉, 응답이 올 때까지 무조건 기다린다.

    • 트랜잭션 영역에 속해 있는 tpcall, tpacall,tpgetrply 등의 메소드에 TPNOTIME 속성을 설정하면 트랜잭션 타임아웃 시간이 적용되고 TPNOTIME 속성은 무시된다.

  • public static final int TPNOTRAN

    • WebtRemoteService의 tpcall, tpacall 메소드에서 사용한다. WebtTransaction에 의해 트랜잭션 영역에 속해 있는 tpcall, tpacall 메소드라도 TPNOTRAN 속성이 설정되어 있으면 트랜잭션 영역에서 제외된다.

  • static final int TPRETRY

    • Java 게이트웨이에서 사용자 메소드를 설정하는 속성이다.

  • public static final int TPRQS

    • WebtRQService.tpenq 메소드나 WebtRQService.tpdeq 메소드 호출에 사용된다.

    • TPRQS 속성을 설정하면 RQ 서비스를 이용할 때 Request Queue에 기록하고 Reply Queue로부터 데이터를 받겠다는 것이다.

참고

각 속성에 대한 자세한 내용은 "Tmax Application Development Guide"를 참고한다.

메소드

다음은 WebtAttribute 클래스의 메소드 목록이다.

  • public void clearAttribute()

    • 모든 속성을 해제한다.

  • public WebtAttribute duplicate()

    • WebtAttribute 객체를 복사한다.

  • public boolean getAttribute(int attr)

    • 특정 속성의 설정 유무를 조사한다. attr 파라미터에 지정된 모든 속성이 설정되었으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환한다.

    • 파라미터

      파라미터설명
      attr

      TPNOBLOCK , TPNOREPLY, TPNOTRAN, TPNOTIME ,TPGETANY, TPNOCHANGE, TPBLOCK, TPRQS, TPFUNC 중의 하나의 값을 설정한다.

      그 외의 값이면 무시하고 하나 또는 하나 이상의 값을 OR(|) 연산으로 설정이 가능하다.

  • public String toString()

    • 해당 객체를 문자열로 표현한 값을 반환한다.

  • public boolean isTPBLOCK()

    • TPBLOCK 속성의 설정 유무를 조사한다.

  • public boolean isTPFUNC()

    • TPFUNC 속성의 설정 유무를 조사한다.

  • public boolean isTPGETANY()

    • TPGETANY 속성의 설정 유무를 조사한다.

  • public boolean isTPNOBLOCK()

    • TPNOBLOCK 속성의 설정 유무를 조사한다.

  • public boolean isTPNOCHANGE()

    • TPNOCHANGE 속성의 설정 유무를 조사한다.

  • public boolean isTPNOREPLY()

    • TPNOREPLY 속성의 설정 유무를 조사한다.

  • public boolean isTPNOTIME()

    • TPNOTIME 속성의 설정 유무를 조사한다.

  • public boolean isTPNOTRAN()

    • TPNOTRAN 속성의 설정 유무를 조사한다.

  • public boolean isTPRQS()

    • TPRQS 속성의 설정 유무를 조사한다.

  • public void setTPBLOCK(boolean value)

    • TPBLOCK 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPBLOCK 속성을 설정하고, FALSE이면 TPBLOCK 속성을 해제한다.
  • public void setTPFUNC(boolean value)

    • TPFUNC 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPFUNC 속성을 설정하고, FALSE이면 TPFUNC 속성을 해제한다.
  • public void setTPGETANY(boolean value)

    • TPGETANY 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPGETANY 속성을 설정하고, FALSE이면 TPGETANY 속성을 해제한다.
  • public void setTPNOBLOCK(boolean value)

    • TPNOBLOCK 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPNOBLOCK 속성을 설정하고, FALSE이면 TPNOBLOCK 속성을 해제한다.
  • public void setTPNOCHANGE(boolean value)

    • TPNOCHANGE 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPNOCHANGE 속성을 설정하고, FALSE이면 TPNOCHANGE 속성을 해제한다.
  • public void setTPNOREPLY(boolean value)

    • TPNOREPLY 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPNOREPLY 속성을 설정하고, FALSE이면 TPNOREPLY 속성을 해제한다.
  • public void setTPNOTIME(boolean value)

    • TPNOTIME 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPNOTIME 속성을 설정하고, FALSE이면 TPNOTIME 속성을 해제한다.
  • public void setTPNOTRAN(boolean value)

    • TPNOTRAN 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPNOTRAN 속성을 설정하고, FALSE이면 TPNOTRAN 속성을 해제한다.
  • public void setTPRETRY(boolean value)

    • TPRETRY 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPRETRY 속성을 설정하고, FALSE이면 TPRETRY 속성을 해제한다.
  • public void setTPRQS(boolean value)

    • TPRQS 속성을 설정 또는 해제한다.

    • 파라미터

      파라미터설명
      valueTRUE이면 TPRQS 속성을 설정하고, FALSE이면 TPRQS 속성을 해제한다.

3.3.2. WebtBuffer

WebT와 Tmax 서버 사이에 주고받는 사용자 데이터를 관리하는 클래스이다. WebtRemoteService의 TP 메소드(tpcall, tpgetrply)의 반환값과 WebtEventHandler의 handleEvent의 파라미터로 이 클래스가 사용된다. tpcall, tpacall 메소드를 호출할 때 필요한 사용자 데이터는 WebtBuffer에 저장된다.

WebtBuffer 클래스는 추상 클래스이므로 사용자가 직접 객체를 생성할 수 없다. tpcall, tpacall 메소드의 입력 데이터에 사용할 WebtBuffer를 얻기 위해서는 WebtRemoteService.createStringBuffer, WebtRemoteService.createCarrayBuffer, WebtRemoteService.createFieldBuffer 메소드 등을 사용한다.

생성자

WebtBuffer 객체를 생성한다.

다음은 WebtBuffer 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    public WebtBuffer()

필드

다음은 WebtBuffer 클래스의 필드 목록이다.

  • static int BT_CARRAY

    • CARRAY 버퍼 타입으로 getBufferType() 메소드의 반환값이 BT_CARRAY인 경우 사용된다.

  • static int BT_FIELD

    • FIELD 버퍼 타입으로 getBufferType 메소드의 반환값이 BT_FIELD인 경우 사용된다.

  • static int BT_STRING

    • STRING 버퍼 타입으로 getBufferType 메소드의 반환값이 BT_STRING인 경우 사용된다.

참고

버퍼 타입에 대한 자세한 내용은 Tmax 안내서 중에 "Tmax Administration Guide"를 참고한다.

메소드

다음은 WebtBuffer 클래스의 메소드 목록이다.

  • public static WebtBuffer createCarrayBuffer()

    • 버퍼 타입이 BT_CARRAY인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public static WebtBuffer createCarrayBuffer(String charset)

    • 버퍼 타입이 BT_CARRAY인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public static WebtBuffer createFieldBuffer()

    • 버퍼 타입이 BT_FIELD인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public static WebtBuffer createFieldBuffer(String charset)

    • 버퍼 타입이 BT_FIELD인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public static WebtBuffer createStringBuffer()

    • 버퍼 타입이 BT_STRING인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public static WebtBuffer createStringBuffer(String charset)

    • 버퍼 타입이 BT_STRING인 WebtBuffer 객체를 생성한다.

    • Character Set은 WebtSystem.getDefaultCharset 메소드의 반환값을 사용한다.

  • public String getBufferTypeString()

    • 버퍼 타입에 해당하는 문자열을 반환한다.

  • public int getBufferType()

    • 버퍼 타입을 반환한다.

  • public int getCallDescriptor()

    • WebtBuffer의 call descriptor를 반환한다. call descriptor는 WebtRemoteService.tpacall 함수가 반환하는 값으로 tpgetrply 메소드의 파라미터로 사용된다. 0 이상이 유효한 값이다.

  • public int getDataLength()

    • byte stream으로 변환된 데이터의 길이를 반환한다.

  • public String getDefaultCharset()

    • 버퍼에서 사용할 기본 Character Set을 반환한다. 반환값이 NULL이면 시스템의 기본 Character Set을 사용해 Character Set 변환을 한다.

  • public String getServiceName()

    • 현재 설정된 서비스명을 반환한다.

  • public String getString()

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 데이터의 시작 부분에서 0x00 이전까지의 내용을 문자열로 변환해 반환한다. 0x00이 byte 배열에 없을 경우 데이터 전체를 문자열로 변환하여 반환한다.

      문자열로 변환할 때 인코딩은 getDefaultCharset 메소드가 반환한 Character Set을 사용한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptiongetBufferType 메소드의 반환값이 BT_STRING, BT_CARRAY가 아니거나, getDefaultCharset 메소드의 반환값이 시스템에서 지원하지 않는 Character Set인 경우 발생한다.
  • public int getUserReturnCode()

    • Tmax 서비스 루틴에서 tpreturn 메소드를 실행할 때 urcode로 설정한 값을 반환한다.

  • public void setDefaultCharset(String charset)

    • 버퍼에서 사용할 Character Set을 지정한다. 버퍼를 시작하기 전에 지정해야 Character Set이 적용된다. 지정하지 않으면 WebtRemoteService.getDefaultCharset 메소드의 반환값이 적용된다.

  • public void setString(String val)

    • Tmax로 서비스를 요청할 데이터를 설정한다.

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때만 사용할 수 있으며 그렇지 않으면 WebtBufferException (tperrno = TPEINVAL)이 발생한다. byte 배열로 변환된 데이터의 끝에는 0x00이 추가된다. Character Set 변환에는 getDefaultCharacterSet 메소드가 반환한 값을 사용한다.

    • 파라미터

      파라미터설명
      val버퍼에 설정할 내용이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptiongetBufferType 메소드의 반환값이 BT_STRING이나 BT_CARRAY가 아니거나, getDefaultCharacterSet 메소드의 반환값이 시스템에서 지원하지 않은 Character Set인 경우 발생한다.

예제

다음은 WebtBuffer를 사용하여 Tmax 서비스를 제공받는 예제로 버퍼 타입은 BT_STRING이다.

WebtConnection connection = null;

try {
    connection = new WebtConnection("localhost", 8888);

    WebtRemoteService service = new WebtRemoteService("TEST", connection);
    WebtBuffer request = service.createStringBuffer();
    request.setString("test string");

    WebtAttribute attr = new WebtAttribute();
    attr.setTPNOTIME();
    WebtBuffer response = service.tpcall(request,attr);
    System.out.println("response : " + response.getString());
} 

catch (WebtIOException ioe) {
    System.out.println("webt connection closed");
    ioe.printStackTrace();
} 

catch (WebtServiceFailException sfe) {
    System.out.println("server returns TP_FAIL");
} 

catch (WebtServiceException se) {
    System.out.println("service fail. tperrno = " + se.getTPErrorMessage());
    se.printStackTrace();
} 

finally {
    connection.close();
}

3.3.3. WebtCarrayBuffer/WebtStringBuffer

WebtBuffer를 상속받은 클래스로 CARRAY 타입, STRING 타입의 데이터를 갖도록 선언된 객체이다.

생성자

WebtCarrayBuffer 객체와 WebtStringBuffer 객체를 생성한다.

다음은 WebtCarrayBuffer/WebtStringBuffer 생성자에 대한 설명이다.

  • WebtCarrayBuffer

    • 프로토타입

      WebtCarrayBuffer()
  • WebtStringBuffer

    • 프로토타입

      WebtStringBuffer()

메소드

다음은 WebtCarrayBuffer 클래스와 WebtStringBuffer 클래스의 메소드 목록이다.

  • public void clear()

    • 내부의 모든 WebtField 객체를 삭제한다.

  • public byte[ ] getBytes()

    • 버퍼 타입이 BT_CARRAY, BT_STRING일 때 데이터 시작 부분에서 끝 부분까지의 내용을 반환한다. getBytes(false)와 동일하다.

    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_CARRAY 또는 BT_STRING이 아닌 경우 발생한다.
  • public byte[ ] getBytes(boolean clone)

    • 버퍼 타입이 BT_CARRAY일 때 데이터 시작 부분에서 끝 부분까지의 내용을 반환한다.

    • 파라미터

      파라미터설명
      cloneTRUE인 경우 내용을 복사한 새로운 byte 배열을 반환한다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_CARRAY가 아닌 경우 발생한다.
  • public byte[ ] getBytes(int offset, int length)

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 파라미터 offset에 설정된 시작 번지로부터 파라미터 length에 설정된 길이만큼의 내용을 byte 배열로 반환한다.

    • 파라미터

      파라미터설명
      offset버퍼에서 가져올 시작 번지이다.
      length읽어올 데이터의 길이이다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.
  • public String getString(int offset, int length)

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 파라미터 offset에 설정된 시작 번지로부터 파라미터 length에 설정된 길이만큼의 내용을 String 타입으로 반환한다.

    • 파라미터

      파라미터설명
      offset버퍼에서 가져올 시작 번지이다.
      length읽어올 데이터의 길이이다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.
  • public String getString(String charset)

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 데이터 시작 부분에서 0x00 이전까지의 내용을 String 타입으로 변환하여 반환한다. 0x00이 byte 배열에 없을 경우 데이터 전체를 String으로 변환하여 반환한다.

    • 파라미터설명
      charsetbyte 배열을 String으로 변환할 때 사용할 Character Set이다. WebtBuffer.getDefaultCharset 메소드가 반환한 값을 사용한다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.
  • public void setBytes(byte[ ] val)

    • Tmax로 서비스를 요청할 데이터를 설정한다.

    • 버퍼 타입이 BT_CARRAY일 때만 사용할 수 있다. 그렇지 않으면 WebtBufferException(tperrno = TPEINVAL)이 발생한다.

    • setBytes(val, false) 메소드를 실행했을 때와 반환값이 동일하다.

    • 파라미터

      파라미터설명
      val버퍼에 설정할 내용이다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_CARRAY가 아닐 때 발생한다.
  • public void setBytes(byte[ ] val, boolean clone)

    • Tmax로 서비스를 요청할 데이터를 설정한다.

    • 버퍼 타입이 BT_CARRAY일 때만 사용할 수 있다. 그렇지 않으면 WebtBufferException (tperrno = TPEINVAL)이 throw된다.

    • 파라미터

      파라미터설명
      clone

      내용을 복사할 것인지 여부를 설정한다.

      TRUE일 경우 val과 동일한 byte 배열을 내부에 생성하고 내용을 복사한다.

    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_CARRAY가 아닐 때 발생한다.
  • public int setBytes(byte[ ] value, int off, int len)

    • value의 내용을 off에서부터 복사하여 저장하고 입력된 데이터의 길이를 반환한다.

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 사용할 수 있다. 그렇지 않으면 WebtBufferException (tperrno = TPEINVAL)이 발생한다.

    • 파라미터

      파라미터설명
      value저장할 데이터이다.
      off읽어올 시작 번지이다.
      len복사할 데이터의 길이이다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.
  • public int setString(int offset, String value)

    • value의 내용을 offset에서부터 복사하여 저장하고 입력된 데이터의 길이를 반환한다.

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때 사용할 수 있다. 그렇지 않으면 WebtBufferException (tperrno = TPEINVAL)이 발생한다.

    • 파라미터

      파라미터설명
      offset읽어올 시작 번지이다.
      value저장할 데이터이다.
    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.
  • public void setString(String value, String charset)

    • 사용자 데이터를 설정한다.

    • 버퍼 타입이 BT_STRING, BT_CARRAY일 때만 사용할 수 있다. 그렇지 않으면 WebtBufferException(tperrno = TPEINVAL)이 발생한다. byte 배열로 변환된 데이터의 끝에는 0x00이 추가된다.

    • 파라미터

      파라미터설명
      value버퍼에 설정할 내용이다.
      charset

      value를 byte 배열로 변환할 때 사용할 Character Set이다.

      NULL인 경우 getDefaultCharacterSet 메소드가 반환한 값을 사용한다.

    • 예외상황

      예외상황설명
      WebtBufferException버퍼 타입이 BT_STRING, BT_CARRAY가 아니거나 Character Set을 시스템에서 지원하지 않는 경우 발생한다.

3.4. 서비스 호출 관련 클래스

3.4.1. WebtRemoteService

WebtRemoteService 클래스는 WebtConnection 클래스 및 그 자식 클래스를 통해 Tmax 서비스를 제공받을 수 있게 하는 API를 제공하고 Tmax 서비스를 호출할 때 필요한 속성 및 서비스명 등을 관리하는 클래스이다. WebtRemoteService 클래스의 사용 방법은 “3.3.2. WebtBuffer”를 참고한다.

생성자

WebtRemoteService 객체를 생성한다.

다음은 WebtRemoteService 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    WebtRemoteService(String svcname, WebtConnection con)
  • 파라미터

    파라미터설명
    svcnameTmax로 요청할 서비스명이다.
    conTmax 연결 정보와 속성이 설정되어 있는 WebtConnection 객체이다.

메소드

다음은 WebtRemoteService 클래스의 메소드 목록이다.

  • public void clear()

    • 기본 서비스 이름(default service name)과 WebtConnection 객체를 NULL로 초기화한다. 기본 Character Set을 WebtSystem.getDefaultCharset 메소드의 반환값으로 초기화한다.

  • public WebtBuffer createCarrayBuffer([int size])

    • 버퍼 타입이 BT_CARRAY인 WebtBuffer 객체를 생성한다.

  • public WebtFieldBuffer createFieldBuffer([int size|WebtFDLKeyTable table])

    • 버퍼 타입이 BT_FIELD인 WebtBuffer 객체를 생성한다.

    • 파라미터

      파라미터설명
      tableFDL key table 인스턴스이다.
  • public WebtBuffer createStringBuffer([int size])

    • 버퍼 타입이 BT_STRING인 WebtBuffer 객체를 생성한다.

  • public WebtConnection getConnection()

    • TP 메소드(tpcall, tpgetrply) 호출에 사용하는 WebtConnection 객체를 반환한다.

  • public String getServiceName()

    • 기본 서비스명을 반환한다.

  • public void setDefaultCharset(String charset)

    • WebtRemoteService 객체를 통해 생성되는 모든 WebtBuffer 객체에 적용될 Character Set을 설정한다.

    • createStringBuffer, createCarrayBuffer, createFieldBuffer 메소드를 호출하기 전에 설정해야 생성된 WebtBuffer 객체에 설정된 값이 적용된다.

    • 파라미터

      파라미터설명
      charset적용할 Character Set이다.
  • public String getDefaultCharset()

    • WebtRemoteService 객체를 통해 생성되는 모든 WebtBuffer 객체에 적용될 Character Set을 반환한다.

  • public void setServiceName(String svcname)

    • 기본 서비스명을 설정한다.

  • public int tpacall([String svcname,] WebtBuffer tx [,WebtAttribute attr] [,WebtMessageHandler])

    • Tmax 서버로 tpacall을 호출한다.

    • 파라미터

      파라미터설명
      svcname서비스명이다.
      tx서비스 요청을 송신할 버퍼이다.
      attr메소드를 호출할 때 적용할 속성이다.
    • 예외상황

      예외상황설명
      WebtServiceFailExceptionTmax 서비스가 TPFAIL을 반환했을 때 발생한다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
      WebtServiceExceptionTmax 서비스 오류가 발생한 경우이다.
      WebtIOException네트워크와 관련된 Tmax 서비스 오류가 발생한 경우이다.
  • public WebtBuffer tpcall([String svcname,] WebtBuffer tx [,WebtAttribute attr])

    • Tmax 서버로 tpcall 메소드를 호출한다.

    • 파라미터

      파라미터설명
      svcname서비스명이다.
      tx서비스 요청을 송신할 버퍼이다.
      attr메소드를 호출할 때 적용할 속성이다.
    • 예외상황

      예외상황설명
      WebtServiceFailExceptionTmax 서비스가 TPFAIL을 반환했을 때 발생한다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
      WebtServiceExceptionTmax 서비스 오류가 발생한 경우이다.
      WebtIOException네트워크와 관련된 Tmax 서비스 오류가 발생한 경우이다.
  • public int tpacallsvg(int svgno|String nodename, [String svcName,] WebtBuffer txBuffer [,WebtAttribute attribute])

    • 특정 서버 그룹에 속하는 서비스를 호출하기 위한 메소드이다. COUSIN으로 묶인 멀티 서버 그룹 환경에서 특정 서버 그룹에 속하는 서비스를 지정하여 비동기형 통신으로 서비스 요청을 송신한다. 특정 서버 그룹을 지정하여 서비스를 호출하는 것 이외에는 tpacall ()과 동일하게 동작한다.

    • 파라미터

      파라미터설명
      svgno서비스가 속해있는 서버 그룹의 번호이다. 서버 그룹의 번호는 tpgetsvglist 메소드를 통해 알아낼 수 있다. -1로 설정하면 tpcall 메소드와 동일하게 동작한다.
      nodeName노드명이다.
      svcName서비스명이다.
      txBuffer서비스 요청을 송신할 버퍼이다.
      attribute메소드를 호출할 때 적용할 속성이다.
  • public WebtBuffer tpcallsvg(int svgno|String nodename, [String svcName,] WebtBuffer txBuffer [,WebtAttribute attribute])

    • 특정 서버 그룹에 속하는 서비스를 호출하기 위한 메소드이다. COUSIN으로 묶인 멀티 서버 그룹 환경에서 특정 서버 그룹에 속하는 서비스를 지정하여 비동기형 통신으로 서비스 요청을 송신한다. 특정 서버 그룹을 지정하여 서비스를 호출하는 것 이외에는 tpacall()과 동일하게 동작한다.

      기동되지 않은 서버 프로세스(spr)로 호출할 경우에는 tpgetreply 메소드에서 Exception이 TPENOENT를 리턴하며, header-type을 'extendedV4'로 설정해야 한다(구버전 header는 지원하지 않는다).

    • 파라미터

      파라미터설명
      svgno서비스가 속해있는 서버 그룹의 번호이다. 서버 그룹의 번호는 tpgetsvglist() API를 통하여 서버 그룹의 일련 번호들을 알아낼 수 있으며 -1로 설정했을 경우에는 기존의 tpcall 과 동일하게 동작한다. 서비스명은 WebtRemoteService 객체를 생성할 때 결정한 이름을 이용한다.
      nodeName노드명이다.
      svcName서비스명이다.
      txBuffer서비스 요청을 송신할 버퍼이다.
      attribute메소드를 호출할 때 적용할 속성이다.
  • public int tpgetsprlist([String svcName], int svgno, int[] index, WebtAttribute attribute)

    • 특정 서버 그룹에 속하는 서비스의 서버 프로세스 인덱스를 가져오기 위한 메소드이다. 서버 프로세스 단위로 호출하기 위해 사용된다.

    • 파라미터

      파라미터설명
      svcName서비스명이다. 생략한 경우 WebtRemoteService에 지정되어 있는 서비스명을 사용한다.
      svgno서비스가 속해있는 서버 그룹의 번호이다. 서버 그룹의 번호는 tpgetsvglist 메소드를 통해 알아낼 수 있다.
      index서버 프로세스 인덱스의 최솟값과 최댓값을 가져오기 위한 int형 배열 공간으로 최소 2개의 공간이 할당되어야 한다. 메소드가 성공적으로 실행되면 index[0]에는 시작 인덱스 값, index[1]에는 마지막 인덱스 값이 설정된다.
      attribute메소드를 호출할 때 적용할 속성이다.
  • public int tpspracall([String svcName], int spri, WebtBuffer txBuffer, WebtAttribute attribute)

    • 특정 서버 프로세스의 서비스를 호출하는 명령이다. tpgetsprlist 메소드를 통해 서버 프로세스 번호의 범위를 가져올 필요가 있다. 그 외에는 리턴값을 이용하여 tpgetrply 메소드로 응답을 받을 수 있는 점에서 tpacall과 동일하게 사용된다.

      기동되지 않은 서버 프로세스(spr)로 호출할 경우에는 tpgetreply 메소드에서 Exception이 TPENOENT를 리턴하며, header-type을 'extendedV4'로 설정해야 한다.(구버전 header는 지원 하지 않는다)

    • 파라미터

      파라미터설명
      svcName서비스명이다. 생략한 경우 WebtRemoteService에 지정되어 있는 서비스명을 사용한다.
      spri서버 프로세스 인덱스이다. tpgetsprlist 메소드를 통해 알아낼 수 있다.
      txBuffer서비스 요청을 송신할 버퍼이다.
      attribute메소드를 호출할 때 적용할 속성이다. 현재 버전에서는 속성 설정을 무시하고 동작한다.
  • public void tpcancel(int cd)

    • tpacall 메소드가 반환한 호출 구별자인 cd를 취소한다. 전역 트랜잭션(Global Transaction)과 관련된 서비스는 취소할 수 없다. 서비스 응답이 성공적으로 취소되면 cd를 통해 받은 응답도 무시된다. WebtTPAListner를 이용해서 tpacall 메소드를 호출했을 경우에는 errorHandle 메소드를 호출한다.

    • 파라미터

      파라미터설명
      cdcall descriptor의 약자로 tpacall()의 반환값이다.
    • 예외상황

      예외상황설명
      WebtServiceException예외상황의 errono는 WebtException.TPEBADDESCdlek 에러가 발생할 경우 WebtServiceException이 발생한다. 상황에 따라 트랜잭션 처리 중이라면 에러 번호는 WebtException.TPETRAN, cd 값이 존재하지 않는 값이라면 에러 번호는 WebtException.TPEBADDESC이다.
  • public WebtBuffer tpgetrply(int cd [,WebtAttribute attr])

    • tpacall()의 응답을 받는 메소드로 int tpgetrply(int *cd, char **rbuf, long *rlen, long flags)와 동일한 기능을 수행한다.

    • 파라미터

      파라미터설명
      cdcall descriptor의 약자로 tpacall()의 반환값이다.
      attr메소드를 호출할 때 적용할 속성이다. attr에 적용할 속성은 "Tmax Application Development Guide"를 참고한다.
    • 예외상황

      예외상황설명
      java.lang.IllegalStateExceptionWebtEventHandler에 의해 acall reply에 대한 callback이 등록된 상태에서 tpgetrply()를 호출할 때 발생한다.
  • public int[ ] tpgetsvglist([[[String nodename,] String svcName,] WebtAttribute attribute])

    • 해당 서비스가 속한 서버 그룹과 이 서버 그룹의 COUSIN으로 설정된 서버 그룹에 대한 정보를 제공하는 메소드이다.

    • 파라미터

      파라미터설명
      nodeName노드명이다.
      svcName서비스명이다.
      attribute현재 지원되지 않으며 TOPNOFLAGS를 설정한다.

3.4.2. WebtRQService

WebtRemoteService를 상속받은 클래스로 RQ(Reliable Queue)를 관리하는 서비스를 사용하기 위한 클래스이다.

생성자

Tmax RQ 서비스를 받기 위한 WebtRQService 객체를 생성한다.

다음은 WebtRQService 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    public WebtRQService(String qname, 
                         String svcname, 
                         WebtConnection con)
  • 파라미터

    파라미터설명
    qnametpend, tpdeq 메소드를 호출할 때 기본값으로 사용할 Tmax RQ의 이름을 지정한다. Tmax 환경설정 파일에 등록된 이름이어야 하며, NULL일 수 없다.
    svcnamepenq, tpdeq 메소드를 호출할 때 기본값으로 사용할 Tmax 서비스명을 지정한다. NULL이나 Tmax 환경설정 파일에 등록된 이름을 지정한다.
    con서비스를 받기 위한 WebtConnection 객체이다. NULL일 수 없다.
  • 예외상황

    예외상황설명
    java.lang.IllegalArgumentExceptioncon이 NULL인 경우 발생한다.

필드

다음은 WebtRQService 클래스의 필드 목록이다.

  • public static final String RQ_ANY_QUEUE

    • RQ_ANY_QUEUE를 설정하고 RQ 서비스를 이용하면 WebtRQService.tpqstat, WebtRQService.tpqsvcstat 메소드를 호출할 때 Request Queue, Reply Queue, Fail Queue의 통계를 수신할 수 있다.

  • public static final String RQ_FAIL_QUEUE

    • RQ_FAIL_QUEUE를 설정하고 RQ 서비스를 이용하면 WebtRQService.tpqstat, WebtRQService.tpqsvcstat 메소드를 호출할 때 Fail Queue의 통계값을 수신할 수 있다.

  • public static final String RQ_REQ_QUEUE

    • RQ_REQ_QUEUE를 설정하고 RQ 서비스를 이용하면 WebtRQService.tpqstat, WebtRQService.tpqsvcstat 메소드를 호출할 때 Request Queue의 통계값을 수신할 수 있다.

  • public static final String RQ_RPLY_QUEUE

    • RQ_RPLY_QUEUE를 설정하고 RQ 서비스를 이용하면 WebtRQService.tpqstat, WebtRQService.tpqsvcstat 메소드를 호출할 때 Reply Queue의 통계값을 수신할 수 있다.

  • public static final int TPERR

    • WebtRQService.tpenq 메소드를 호출할 때 서비스가 실패해서 Fail Queue에 송신된 경우 수신되는 값이다.

    • WebtRQService.checkError 메소드를 통해 반환 타입을 확인할 수 있고, WebtBuffer.getUserReturnCode 메소드를 통해 에러 코드를 확인할 수 있다.

  • public static final int TPFAIL

    • WebtRQService.tpenq 메소드를 호출할 때 서비스명을 지정하고 해당 서비스에서 tpreturn의 첫 번째 파라미터로 TPFAIL이 설정된 경우에 수신되는 값이다.

    • WebtRQService.checkError 메소드를 통해 반환 타입을 확인할 수 있고, WebtBuffer.getUserReturnCode 메소드를 통해 에러 코드를 확인할 수 있다.

  • public static final int TPREQ

    • WebtRQService.tpenq 메소드를 호출할 때 두 번째 파라미터에 서비스 이름이 아닌 NULL이 지정된 경우 서비스가 정상적으로 이루어지면 수신되는 값이다.

    • WebtRQService.checkError 메소드를 통해 반환 타입을 확인할 수 있고, WebtBuffer.getUserReturnCode 메소드를 통해 에러 코드를 확인할 수 있다.

  • public static final int TPSUCCESS

    • WebtRQService.tpenq 메소드를 호출할 때 서비스명을 지정하고 해당 서비스에서 tpreturn의 첫 번째 파라미터로 TPSUCCESS가 설정된 경우에 수신되는 값이다.

    • WebtRQService.checkError 메소드를 통해 반환 타입을 확인할 수 있고, WebtBuffer.getUserReturnCode 메소드를 통해 에러 코드를 확인할 수 있다.

메소드

다음은 WebtRQService 클래스의 메소드 목록이다.

  • public static int checkError(WebtBuffer rqbuf)

    • RQ에 저장된 데이터의 상세한 정보를 받아오는 메소드이다. 서비스명은 rqbuf.getServiceName 메소드로 알 수 있고 에러 코드는 rqbuf.getUserReturnCode 메소드로 알 수 있다.

  • public String getQueueName()

    • 지정된 기본 RQ명을 반환한다.

  • public void setQueueName(String qname)

    • tpenq(), tpdeq()를 호출할 때 기본값으로 사용할 RQ명을 재지정한다.

    • 파라미터

      파라미터설명
      qname새로 지정할 기본 RQ명이다.
    • 예외상황

      예외상황설명
      java.lang.IllegalArgumentExceptionqname이 NULL인 경우 발생한다.
  • public WebtBuffer tpdeq(String qname, String svcname, WebtAttribute attr)

    • tpenq() 서비스를 호출하는 메소드로 RQ에 저장된 데이터를 읽을 때 사용한다. 한 번 읽어온 데이터는 RQ에서 제거되기 때문에 한 번 수신한 데이터를 다시 읽을 수 없다.

    • 파라미터

      파라미터설명
      qname데이터를 저장할 RQ명으로 Tmax 환경설정 파일에 등록된 이름이어야 한다.
      svcname호출할 서비스명으로 Tmax 환경설정 파일에 등록된 서비스명이어야 한다. Reply Queue에서 같은 서비스명을 가진 데이터들을 순차적으로 수신한다.
      attr메소드를 호출할 때 적용할 속성으로 설정 가능한 값에 대한 설명은 표 이후를 참고한다.

      다음은 attr에 설정가능한 값에 대한 설명이다.

      파라미터설명
      WebtAttribute.TPRQSReply Queue에서 데이터를 수신할 때 지정한다.
      WebtAttribute.TPFUNCReply Queue에 저장된 데이터를 수신할 때 WebtAttribute.TPRQS와 함께 지정한다. 기록만 되고 서비스를 호출하지 않는다.
      WebtAttribute.TPNOFLAGS결과값을 클라이언트의 버퍼에 송신한다. tpdeq에도 결과값을 수신하기 위해서 TPNOFLAGS를 설정해야 한다.
    • 예외상황

      예외상황설명
      WebtServiceExceptionqname이 Null이거나 Queue가 비어 있을 경우 발생한다.
      WebtServiceFailException서비스가 올바른 응답을 주지 않았을 경우 발생한다.
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
  • public int tpenq(String qname, String svcname, WebtBuffer tx, WebtAttribute attr)

    • tpenq 서비스를 호출하는 메소드로 RQ에 저장된 데이터를 읽어올 때 사용한다. 한 번 읽어온 데이터는 RQ에서 제거되기 때문에 다시 읽어올 수 없다.

    • 파라미터

      파라미터설명
      qname데이터를 저장할 RQ명으로 Tmax 환경설정 파일에 등록된 이름이어야 한다.
      svcname호출할 서비스명으로 Tmax 환경설정 파일에 등록된 서비스명이어야 한다. Reply Queue에서 같은 서비스명을 가진 데이터들을 순차적으로 수신한다.
      tx서비스를 호출할 때 전달할 데이터이다. RQ에서 수신할 데이터를 받아올 변수를 지정한다.
      attr메소드를 호출할 때 적용할 속성으로 설정 가능한 값에 대한 설명은 표 이후를 참고한다.

      다음은 attr에 설정가능한 값에 대한 설명이다.

      파라미터설명
      WebtAttribute.TPRQSReply Queue에서 데이터를 수신할 때 지정한다.
      WebtAttribute.TPFUNCReply Queue에 저장된 데이터를 수신할 때 WebtAttribute.TPRQS와 함께 지정한다. 기록만 되고 서비스를 호출하지 않는다.
      WebtAttribute.TPNOFLAGS결과값을 클라이언트의 버퍼에 송신한다. tpdeq에도 결과값을 수신하기 위해서 TPNOFLAGS를 설정해야 한다.

    • 예외상황

      예외상황설명
      WebtServiceExceptionqname이 NULL이거나 Queue가 비어 있을 경우 발생한다.
      WebtServiceFailException서비스가 올바른 응답을 주지 않았을 경우 발생한다.
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
  • int tpenq(WebtBuffer tx [,WebtAttribute attr])

    • tpenq 서비스를 호출하는 메소드로 서비스를 요청해 수신받은 데이터를 RQ에 저장하는 함수이다. 저장된 데이터는 도착 순서에 따라 관리되며 데이터를 읽을 때는 들어온 순서대로 처리된다.

    • 파라미터

      파라미터설명
      svcname호출할 서비스명으로 Tmax 환경설정 파일에 등록된 이름이어야 한다.
      tx서비스를 호출할 때 전달되어야 할 데이터를 지정한다.
      attr메소드를 호출할 때 적용할 속성으로 설정 가능한 값은 표 이후를 참고한다.

      다음은 attr에 설정 가능한 값에 대한 설명이다.

      파라미터설명
      WebtAttribute.TPRQSRequest Queue에 데이터가 기록이 되고 해당 서비스를 수행 후 Reply Queue에 결과값이 기록된다.
      WebtAttribute.TPNOREPLY해당 서비스를 수행하고 결과를 Reply Queue에 저장하지 않는다.
      WebtAttribute.TPFUNC서비스를 호출할 때 Reply Queue에 해당 데이터가 기록되고 서비스를 호출하지 않는다.
      WebtAttribute.TPNOFLAGS서비스를 수행 후 서비스 결과와 관계없이 해당 결과값을 클라이언트 버퍼에 저장한다.
    • 예외상황

      예외상황설명
      WebtServiceException서비스가 올바른 응답을 주지 않았을 경우 발생한다.
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
  • public int tpqstat(String qname, String qtype)

    • 현재 Queue에 저장된 데이터의 통계값을 구하는 함수로 qname이 NULL이면 getQueueName 메소드를 사용한다.

    • 파라미터

      파라미터설명
      qname통계값을 수신할 RQ명으로 Tmax 환경설정 파일에 등록된 이름이어야 한다.
      qtypeqtype에 설정할 수 있는 값은 아래 표에서 설명한다.

      qtype에 설정할 수 있는 값은 다음과 같다.

      파라미터설명
      RQ_ANY_QUEUERequest Queue, Reply Queue, Fail Queue의 통계를 낸다.
      RQ_FAIL_QUEUEFail Queue의 통계를 낸다.
      RQ_REQ_QUEUERequest Queue의 통계를 낸다.
      RQ_RPLY_QUEUEReply Queue의 통계를 낸다.
    • 예외상황

      예외상황설명
      WebtServiceExceptionqname이 NULL이거나 qtype이 유효한 이름이 아닐 경우 발생한다.
      WebtIOException네트워크 오류가 발생한 경우이다.
  • int tpqsvcstat(String qname, String svcname, String qtype)

    • 현재 Queue에 저장된 데이터의 통계값을 서비스명별로 구하는 함수로 qname이 NULL이면 getQueueName 메소드를 사용한다.

    • 파라미터

      파라미터설명
      qname통계값을 수신할 RQ명으로 지정된 이름은 Tmax 환경설정 파일에 등록된 이름이어야 한다.
      svcname서비스명이다.
      qtypeqtype에 설정할 수 있는 값은 아래 표에서 설명한다.

      qtype에 설정할 수 있는 값은 다음과 같다.

      파라미터설명
      WebtRQService.RQ_ANY_QUEUERequest Queue, Reply Queue, Fail Queue의 통계를 낸다.
      WebtRQService.RQ_FAIL_QUEUEFail Queue의 통계를 낸다.
      WebtRQService.RQ_REQ_QUEUERequest Queue의 통계를 낸다.
      WebtRQService.RQ_RPLY_QUEUEReply Queue의 통계를 낸다.
    • 예외상황

      예외상황설명
      WebtServiceExceptionqname이 NULL이거나 qtype이 유효한 이름이 아닐 경우 발생한다.
      WebtIOException네트워크 오류가 발생한 경우이다.

3.4.3. WebtDialogueService

WebtRemotedService를 상속받은 클래스로 대화형 서비스(Conversation mode service)를 제공한다.

생성자

WebtDialogueService 객체를 생성한다.

다음은 WebtDialogueService 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    public WebtDialogueService(String svcname, 
                               WebtConnection con)
  • 파라미터

    파라미터설명
    svcnameTmax로 요청할 서비스명이다.
    conTmax 연결 정보와 속성이 설정되어 있는 WebtConnection 객체이다.
  • 예외상황

    예외상황설명
    java.lang.IllegalArgumentExceptionsvcname 또는 con이 NULL인 경우 발생한다.

메소드

다음은 WebtDialogueService 클래스의 메소드 목록이다.

  • public boolean isClosed()

    • 현재 대화형 서비스에서 세션이 종료되었는지 반환한다.

  • public boolean isReceiveNext()

    • 현재 tprecv가 가능한지를 반환한다.

    • 예외상황

      예외상황설명
      WebtServiceExceptiontpconnect가 안된 상태에서 isReceiveNext 메소드를 호출할 때 발생한다.
  • public boolean isSendNext()

    • 현재 tpsend가 가능한지를 반환한다.

    • 예외상황

      예외상황설명
      WebtServiceExceptiontpconnect가 안된 상태에서 isSendNext 메소드를 호출할 때 발생한다.
  • DialogueQueue tpconnect([WebtBuffer sndbuf,] [WebtAttribute attr,] boolean recvNext)

    • 대화형 모드 서비스의 연결을 설정한다. 연결을 설정할 때 반드시 대화 주도권을 설정해야 한다.

    • 파라미터

      파라미터설명
      sndbuftpconnect 시점에서 서버에 보낼 메시지이다.
      attr송신 버퍼에 적용할 속성이다. WebtAttribute에 정의된 속성만 유효하다.
      recvNext
      • FALSE: tpconnect 이후 연결 제어권을 계속 유지하며 tpsend를 할 수 있다. 상대방은 수신만 할 수 있다.

      • TRUE: tpconnect 이후 연결 제어권을 상대방에 넘기고 수신만 할 수 있다.

    • 예외상황

      예외상황설명
      WebtServiceException올바른 응답이 돌아오지 않은 경우이다.
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtTXException트랜잭션 오류가 발생한 경우이다.
  • public void tpdiscon()

    • tpconnect 이후 연결의 제어권을 가지고 있는 측에서 대화형 서비스의 연결을 즉시 종료할 수 있도록 한다.

    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceException올바른 응답이 돌아오지 않은 경우이다.
  • WebtBuffer tprecv([WebtAttribute attr])

    • 연결 제어권을 상대방에게 넘기고 수신 모드 상태에서 메시지를 수신한다.

    • 파라미터

      파라미터설명
      attr수신 버퍼에 적용할 속성이다. WebtAttribute에 정의된 속성만 유효하다.
    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceExceptionQueue가 설정되지 않았거나 타임아웃 시간 내에 올바른 응답이 돌아오지 않은 경우이다.
      WebtDialogueException대화형 서비스의 통신 상태가 수신 가능한 상태가 아닐 경우이다.
  • void tpsend(WebtBuffer tx, [WebtAttribute attr,] boolean recvNext)

    • 대화형 서비스에서 메시지를 송신한다.

    • 파라미터

      파라미터설명
      tx전달할 메시지 버퍼이다.
      attr설정할 사용자 속성이다. WebtAttribute에 정의된 속성만 유효하다.
      recvNext

      전달 후 송신 모드로 변경 여부를 설정한다.

      • TRUE: 송신 모드로 변경한다.

    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceExceptionQueue가 설정되지 않았거나 타임아웃 시간 내에 올바른 응답이 돌아오지 않은 경우이다.
      WebtDialogueException대화형 서비스의 통신의 상태가 송신 가능한 상태가 아닐 경우이다.

3.5. 필드 데이터 관련 클래스

3.5.1. WebtFieldElement

WebtFieldElement는 WebtField의 필드 키(field key)에 대한 필드 데이터(field data)를 담는 인터페이스이다. WebtField는 필드 데이터를 WebtFieldElement 클래스로 표현하여 관리한다. 하나의 필드 데이터에 하나의 WebtFieldElement 객체가 존재한다.

WebtFieldElement 클래스는 인터페이스이므로 사용자가 직접 객체를 생성할 수 없다. Tmax 서버로부터 수신한 필드 데이터라면 WebT가 WebtFieldElement 객체를 생성해 해당 WebtField 객체에 추가한다. 사용자가 WebtFieldElement 객체를 생성하여 WebtField에 추가하려면 WebtField.add 메소드와 WebtField.insert 메소드를 사용하면 된다.

메소드

다음은 WebtFieldElement 클래스의 메소드 목록이다.

  • byte[ ] bytesValue()

    • 필드 데이터의 Element를 byte[ ]로 표현하여 반환한다.

    • 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        저장되어 있는 원본 데이터를 byte[ ]로 표현하여 반환한다. 단, FB_STRING인 경우 Tmax 서버로부터 데이터를 수신할 때 데이터의 가장 마지막이 '\0'으로 끝나는데, 이 '\0'를 제거한 상태로 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        stringValue().getBytes()를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferException필드 데이터가 NULL인 경우 발생한다.
  • byte byteValue()

    • 필드 데이터의 Element를 byte로 변환하여 반환한다.

    • 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        저장되어 있는 원본 데이터를 byte[ ]로 표현하여 반환한다. 단, FB_STRING인 경우 Tmax 서버로부터 데이터를 수신할 때 데이터의 가장 마지막이 '\0'으로 끝나는데, 이 '\0'를 제거한 상태로 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        stringValue().getBytes()를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferException필드 데이터가 NULL인 경우 발생한다.
  • double doubleValue()

    • 필드 데이터의 Element를 double로 변환하여 반환한다.

    • 원본 데이터를 value라고 했을 때 필드 타입에 따라서 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

    • 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        Double.valueOf(stringValue()).doubleValue()와 동일한 결과를 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        (new Double(value)).doubleValue()와 동일한 결과를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionWebtFieldElement의 필드 타입이 FB_STRING, FB_CHAR, FB_CARRAY인 경우 숫자로 표현할 때 java.io.NumberFormatException 또는 java.io.UnsupportedEncodingException이 발생할 수 있다. 이때 WebtBufferException이 발생한다. 또는 필드 데이터가 NULL인 경우에 WebtBufferException이 발생한다.
  • float floatValue()

    • 데이터의 Element를 float으로 변환하여 반환한다.

    • 원본 데이터를 value라고 했을 때 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        Float.valueOf(stringValue()).floatValue()와 동일한 결과를 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        (new Double(value)).floatValue()와 동일한 결과를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionWebtFieldElement의 필드 타입이 FB_STRING, FB_CHAR, FB_CARRAY인 경우 숫자로 표현할 때 java.io.NumberFormatException 또는 java.io.UnsupportedEncodingException이 발생할 수 있다. 이때 WebtBufferException이 발생한다. 또는 필드 데이터가 NULL인 경우에 WebtBufferException이 발생한다.
  • WebtField getField()

    • WebtFieldElement가 속한 WebtField 객체의 reference를 반환한다.

  • int intValue()

    • 필드 데이터의 Element를 int로 변환하여 반환한다.

    • 원본 데이터를 value라고 했을 때 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        Integer.valueOf(stringValue()).intValue()와 동일한 결과를 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        (new Double(value)).intValue()와 동일한 결과를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionWebtFieldElement의 필드 타입이 FB_STRING, FB_CHAR, FB_CARRAY인 경우 숫자로 표현할 때 java.io.NumberFormatException 또는 java.io.UnsupportedEncodingException이 발생할 수 있다. 이때 WebtBufferException이 발생한다. 또는 필드 데이터가 NULL인 경우에 WebtBufferException이 발생한다.
  • int longValue()

    • 필드 데이터의 Element를 long으로 변환하여 반환한다.

    • 원본 데이터를 value라고 했을 때 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        Integer.valueOf(stringValue()).intValue()와 동일한 결과를 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        (new Double(value)).intValue()와 동일한 결과를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionWebtFieldElement의 필드 타입이 FB_STRING, FB_CHAR, FB_CARRAY인 경우 숫자로 표현할 때 java.io.NumberFormatException 또는 java.io.UnsupportedEncodingException이 발생할 수 있다. 이때 WebtBufferException이 발생한다. 또는 필드 데이터가 NULL인 경우에 WebtBufferException이 발생한다.
  • int shortValue()

    • 필드 데이터의 Element를 short으로 변환하여 반환한다.

    • 원본 데이터를 value라고 했을 때 필드 타입에 따라 다음과 같은 방법으로 필드 데이터를 변환하여 반환한다.

      • FB_CHAR, FB_CARRAY, FB_STRING

        Integer.valueOf(stringValue()).shortValue()와 동일한 결과를 반환한다.

      • FB_SHORT, FB_INT, FB_LONG, FB_FLOAT, FB_DOUBLE

        (new Double(value)).shortValue()와 동일한 결과를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionWebtFieldElement의 필드 타입이 FB_STRING, FB_CHAR, FB_CARRAY인 경우 숫자로 표현할 때 java.io.NumberFormatException 또는 java.io.UnsupportedEncodingException이 발생할 수 있다. 이때 WebtBufferException이 발생한다. 또는 필드 데이터가 NULL인 경우에 WebtBufferException이 발생한다.
  • int sstringValue([String charset])

    • 필드 데이터의 Element를 string으로 변환하여 반환한다. stringValue(getField().getDefaultCharset())과 동일한 결과이다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.

3.5.2. WebtFDLKeyTable

Tmax 서비스를 호출할 때 사용하는 버퍼의 타입이 WebtBuffer.BT_FIELD인 경우에 필드 키를 사용하게 된다. 일반 Tmax 클라이언트와 마찬가지로 WebT의 필드 키 사용 방법에는 다음과 같이 2가지가 있다.

구분설명
int필드 정의 파일에 정의된 필드 키의 이름을 int로 표현한 상수를 사용하는 방식이다.
String

필드 정의 파일의 필드 키의 이름을 String으로 표현하여 사용하는 방식이다.

필드 정의 파일(확장자 : .f)을 fdlc 유틸리티를 사용해 컴파일한 결과 파일인 fdl 파일(확장자 : .fdl)을 WebtFDLKeyTable 클래스를 통하여 로드(Load)해야 한다.

fdl 파일을 로드하여 WebT에서 사용할 수 있게 하려면 WebtSystem.createDefaultFieldKeyTable(String) 메소드를 사용해야 한다.

생성자

WebtFDLKeyTable 객체를 생성한다.

다음은 WebtFDLKeyTable 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    WebtFDLKeyTable()

메소드

다음은 WebtFDLKeyTable 클래스의 메소드 목록이다.

  • public int getKey(String keyString)

    • 필드 키의 이름을 int 타입 상수로 표현한 값을 반환한다.

    • 파라미터

      파라미터설명
      keyString필드 키의 이름이다.
  • public String getKeyName(int fldkey)

    • int 타입 상수로 표현된 필드 키의 이름을 String 타입으로 표현한 값을 반환한다.

    • 파라미터

      파라미터설명
      fldkeyint 타입 상수이다.
  • public int getType(String keyString)

    • 필드 키의 타입을 반환한다.

    • 유효하지 않은 필드 키이면 -1을 반환하고 유효한 필드 키인 경우 다음 중에 하나를 반환한다.

      (FieldAccess.FB_CHAR , FieldAccess.FB_SHORT, FieldAccess.FB_INT, FieldAccess.FB_LONG,

      FieldAccess.FB_FLOAT, FieldAccess.FB_DOUBLE, FieldAccess.FB_STRING, FieldAccess.FB_CARRAY)

    • 파라미터

      파라미터설명
      keyString필드 키의 이름이다.
  • public void loadFDLKeys(String filepath)

    • fdl 파일로부터 필드 키를 로드한다.

    • 파라미터

      파라미터설명
      filepathfdl 파일의 위치이다.
    • 예외상황

      예외상황설명
      java.io.IOException파일 읽기 오류가 발생한 경우이다.
  • public static int makeFDLKey(int type, int no)

    • 애플리케이션 프로그램에서 사용자가 필드 타입과 필드 번호(field number)를 정의하면, int 타입의 상수로 표현한 필드 키를 생성해서 반환한다.

    • 파라미터

      파라미터설명
      type

      필드 타입으로 다음 중의 하나를 설정한다.

      (FieldAccess.FB_CHAR , FieldAccess.FB_SHORT, FieldAccess.FB_INT, FieldAccess.FB_LONG, FieldAccess.FB_FLOAT, FieldAccess.FB_DOUBLE, FieldAccess.FB_STRING, FieldAccess.FB_CARRAY)

      no필드 번호이다.
  • public int size()

    • 현재 로드된 필드 키의 개수를 반환한다.

3.5.3. WebtFieldSet

WebtFieldSet 클래스는 Tmax 서비스에 사용할 버퍼 타입이 WebtBuffer.BT_FIELD인 경우 좀 더 편리하게 필드 데이터의 Element를 다룰 수 있도록 해주는 유틸리티 클래스이다.

생성자

주어진 WebtBuffer로 WebtFieldSet 객체를 생성한다.

다음은 WebtFieldSet 클래스의 생성자이다.

  • 프로토타입

    public WebtFieldSet(WebtBuffer buffer)
  • 파라미터

    파라미터설명
    bufferWebtBuffer.BT_FIELD 타입의 WebtBuffer 객체이다.
  • 예외상황

    예외상황설명
    java.lang.IllegalArgumentExceptionbuffer가 NULL인 경우 발생한다.
    WebtBufferExceptionbuffer의 버퍼 타입이 BT_FIELD 타입이 아닌 경우 발생한다.

메소드

다음은 WebtFieldSet 클래스의 메소드 목록이다.

  • public void add(int key|String key , byte[ ] value|double value |long value|String value [,String charset])

    • 필드 키의 값이 또는 필드 키의 이름이 key인 필드 데이터를 추가한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      value추가할 필드 데이터이다.
      charset사용할 Character Set이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public int count(int key)

    • 필드 키의 값이 key와 동일한 필드 데이터의 Element 개수를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public WebtFieldElement get(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 데이터를 반환한다. index가 있을 경우 index 번째 데이터를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public byte getByte(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 byte 형태로 표현하여 반환한다. index가 있을 경우 index 번째 데이터를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public byte[ ] getBytes(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 byte[ ] 형태로 표현하여 반환한다. index가 있을 경우 index 번째를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public Double getDouble(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 Double 형태로 표현하여 반환한다. index가 있을 경우 index 번째를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public Float getFloat(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 Float 형태로 표현하여 반환한다. index가 있을 경우 index 번째를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public Integer getInt(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 Integer 형태로 표현하여 반환한다. index가 있을 경우 index 번째를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public Long getLong(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 Long 형태로 표현하여 반환한다. index가 있을 경우 index 번째를 반환한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public Short getShort(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 Short 형태로 표현하여 반환한다. index가 있을 경우 index번째를 가져온다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public String getString(int key|String key[, String charset] [, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 String 형태로 표현하여 반환한다. index가 있을 경우 index번째를 가져온다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      charset사용할 Character Set이다.
      index필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.

  • public java.util.Vector getFieldKeyNames()

    • WebtSystem.createDefaultFieldKeyTable에 의해 생성된 필드 키의 이름 목록에서 String 타입으로 표현된 필드 키 이름의 목록을 찾아 반환한다.

  • public void insert(int key|String key, byte[ ] value/ double value/ long value/ String value[,String charset], int index)

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터를 삽입한다. String 타입 데이터인 경우 Character Set을 지정할 수 있다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      value삽입할 필드 데이터이다.
      charset사용할 Character Set이다.
      index필드 데이터를 삽입할 위치이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionkey에 해당하는 WebtField 객체가 없을 경우 발생한다.
  • public void remove(int key|String key[, int index])

    • 필드 키의 값 또는 필드 키의 이름이 key인 필드 데이터의 Element를 제거한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
      index제거할 필드 데이터의 Element의 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public void removeAll(int key|String key)

    • 필드 키의 값 또는 필드 키의 이름이 key인 모든 필드 데이터의 Element를 제거한다.

    • 파라미터

      파라미터설명
      key필드 키의 값 또는 필드 키의 이름이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.

예제

다음은 WebtFieldSet을 사용하는 예제이다.

WebtConnection connection = new WebtConnection("localhost", 8888);
WebtRemoteService service = new WebtRemoteService("FIELDSET_TEST", connection);
// BT_FIELD 타입의 WebtBuffer를 이용하여 WebtFieldSet 객체를 생성한다.
WebtFieldSet sndset = new WebtFieldSet(service.createFieldBuffer());

// WebtFieldSet을 사용하여 WebtBuffer에 필드 데이터 Element를 추가한다.
sndset.add("STRING1", "hello!");
// tpcall 호출
WebtBuffer rcvbuf = service.tpcall(sndset.getFieldBuffer());

// Tmax로부터 수신한 WebtBuffer를 이용하여 WebtFieldSet 객체를
//생성한다. 이때 rcvbuf의 버퍼 타입은 BT_FIELD 타입이어야 한다.
WebtFieldSet rcvset = new WebtFieldSet(rcvbuf);

// Tmax 서버가 보낸 필드 타입이 INT1인 필드 데이터를 꺼낸다.
int value1 = rcvset.getInt("INT1").intValue();

// Tmax 서버가 보낸 필드 타입이 ITN1인 두 번째 필드 데이터를
// String으로 변환하여 꺼낸다.
String value2 = rcvset.getString("INT1");
...

3.5.4. WebtField

WebtField 클래스는 필드 타입 버퍼에서 사용하는 필드 키 및 그 필드 키 값에 해당하는 다수의 데이터(WebtFieldElement)를 관리하는 추상 클래스이다.

특정 필드 키에 대한 WebtField 객체를 얻으려면 BufferAccess.createField(int), BufferAccess.createField(String), BufferAccess.getField(int), BufferAccess.getField(String) 메소드를 사용한다. WebtBuffer의 버퍼 타입은 WebtBuffer.BT_FIELD이어야 한다.

생성자

WebtField 객체를 생성한다.

다음은 WebtField 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    WebtField()

메소드

다음은 WebtField 클래스의 메소드 목록이다.

  • public void add(<any type> value)

    • value를 해당 필드 키 타입으로 변환하여 추가한다. value가 NULL이면 추가할 수 없으므로 무시한다.

    • 파라미터

      파라미터설명
      value필드 키 타입으로 추가될 데이터이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public void insert(<any type> value)

    • value를 해당 필드 키 타입으로 변환하여 삽입한다. value가 NULL이면 삽입할 수 없으므로 무시한다.

    • 파라미터

      파라미터설명
      value필드 키 타입으로 삽입될 데이터이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public WebtFieldElement get()

    • 첫 번째 데이터를 삭제하고 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public WebtFieldElement remove()

    • 해당 필드 타입 버퍼의 0번째 값을 삭제한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • Object[ ] getAll()

    • 모든 데이터를 WebtFieldElement[ ] 형태로 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public String getDefaultCharset()

    • WebtField 객체에 저장된 데이터를 String 타입으로 변환하거나 String 타입 데이터를 byte[ ]로 변환할 때, 사용하는 Character Set을 반환한다.

  • public java.util.Enumeration getFieldEnumeration()

    • 모든 데이터를 WebtFieldElement의 Enumeration 형태로 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public int getFieldKey()

    • WebtField 객체의 필드 키의 값을 반환한다.

  • public int getFieldType()

    • WebtField 객체의 필드 키의 타입을 반환한다.

  • public java.util.Vector getFieldVector()

    • 모든 데이터를 WebtFieldElement의 Vector 형태로 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public boolean isNumericType()

    • WebtField 객체의 필드 키가 숫자 타입(Numeric Type)인지 검사한다.

  • public void removeAll()

    • 모든 데이터를 삭제한다.

  • public void replace(<any type> value, int index)

    • index번째의 값을 value를 해당 필드 타입으로 변환한 값으로 치환한다. value가 NULL인 경우 변환이 불가능하므로 무시한다.

    • 파라미터

      파라미터설명
      value치환할 데이터로 데이터 타입이 Byte, Short, Integer, Long, Float, Double, String이 아니면 replace(value.toString(), index)를 수행한다.
      index치환될 필드 데이터의 Element 순번이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public void setDefaultCharset(String charset)

    • WebtField 객체에 저장된 데이터를 String 타입으로 변환하거나 String 타입 데이터를 byte[ ]로 변환할 때 사용할 Character Set을 지정한다. 지정하지 않으면 WebtRemoteService에서 지정한 값을 사용한다.

    • 파라미터

      파라미터설명
      charset지정할 Character Set이다.
  • public int size()

    • 저장된 데이터의 개수를 반환한다.

  • public java.lang.String toString()

    • 필드의 내용을 사용자가 인식할 수 있는 문자열로 출력한다. Tmax의 fbprint()와 같은 기능이다.

예제

다음은 WebtField 클래스를 사용하는 예제이다.

WebtConnection connection = new WebtConnection("localhost", 8888);
WebtRemoteService service = new WebtRemoteService("TEST", connection);
WebtBuffer fieldBuf = service.createFieldBuffer();
 
// 필드 키 값이 INT1인 WebtField 객체를 생성한다.
WebtField field1 = fieldBuf.createField(INT1);
 
// 필드 키 이름이 "INT2"인 WebtField 객체를 생성한다.
WebtField field2 = fieldBuf.createField("INT2");
 
// 생성한 WebtField 객체에 데이터를 추가한다.
field1.add("1");
field1.add((int)2);
field1.add(123.45);....

// WebtField 객체에서 위에서 추가한 데이터를 차례로 꺼내온다.
int data1 = field1.get().intValue(); // == 1
int data2 = field1.get().intValue(); // == 2
int data3 = field1.get().intValue(); // == 123
....

WebtField.add 또는 WebtField.insert 메소드를 사용해 새로운 필드 데이터를 추가하거나 삽입할 때 필드 키 타입과 추가하려는 데이터의 타입에 따라서 실제 추가, 삽입되는 데이터의 값이 달라질 수 있다. 이때 적용되는 규칙은 WebtField.add 메소드와 WebtField.insert 메소드를 참고한다. Tmax 서버로부터 전송받은 필드 데이터에 접근할 때는 WebtFieldElement의 메소드를 사용한다. 이때의 데이터 변환에 대해서는 “3.5.1. WebtFieldElement”를 참고한다.

3.5.5. WebtFieldBuffer

WebtBuffer의 하위 클래스로 WebtField 타입의 데이터를 가지고 있는 WebtBuffer 객체이다.

생성자

WebtFieldBuffer 객체를 생성한다.

다음은 WebtCarrayBuffer 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    WebtFieldBuffer()

메소드

다음은 WebtFieldBuffer 클래스의 메소드 목록이다.

  • public void clear()

    • 내부의 모든 WebtField 객체를 삭제한다.

  • public WebtField createField(int fldkey|String fldkeyName)

    • fieldkey를 필드 키의 값으로 하는 WebtField 객체를 생성하여 반환한다. fieldkey의 값과 동일한 필드 키 값을 가진 WebtField 객체가 이미 존재하면 그 객체를 반환한다.

    • fldkeyName을 사용해 필드 키의 이름을 입력해 WebtField 객체를 생성할 경우에는 WebtSystem.createDefaultFieldKeyTable(String)을 이용하여 사용할 필드 키 테이블이 미리 로드되어 있어야 한다.

    • 파라미터

      파라미터설명
      fldkey생성할 WebtField 객체의 필드 키의 값이다.
      fldkeyName생성할 WebtField 객체의 필드 키의 이름이다.
    • 예외상황

      예외상황설명
      WebtBufferExceptionfieldkey가 유효한 값이 아니거나 필드 키 테이블에서 찾지 못한 경우 발생한다.
  • public WebtField getField(int fldkey|String fldkeyName)

    • fieldkey를 필드 키 값으로 하거나 fldkeyName을 필드명으로 하는 WebtField 객체를 반환한다. 존재하지 않으면 NULL을 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionfieldkey가 유효한 값이 아니거나 필드 키 테이블에서 찾지 못한 경우 발생한다.
  • public java.util.Vector getFieldKeyNames()

    • String으로 표현된 필드 키 목록을 반환한다. WebtSystem.createDefaultFieldKeyTable(String)에 의해 생성된 필드 키 테이블에서 찾는다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.

  • public java.util.Vector getFields()

    • 생성된 순서대로 정렬한 WebtField 객체의 Vector를 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public WebtField removeField(int fldkey)

    • fieldkey를 필드 키 값으로 하는 WebtField 객체를 찾아 삭제한다. 삭제될 WebtField 객체가 존재하지 않으면 NULL을 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionTmax 서비스를 받을 송수신 버퍼(WebtBuffer) 사용 중 오류가 발생했다.
  • public WebtField removeField(String fldkeyName)

    • fieldkey를 필드 키 값으로 하는 WebtField 객체를 찾아 삭제한다. 삭제될 WebtField 객체가 존재하지 않으면 NULL을 반환한다.

    • 예외상황

      예외상황설명
      WebtBufferExceptionfieldkey가 유효한 값이 아니거나 필드 키 테이블에서 찾지 못한 경우 발생한다.

3.6. 이벤트 메시지 처리 관련 클래스

3.6.1. WebtEventConnecion

Tmax 서버나 다른 클라이언트에서 전송한 이벤트 메시지(tppost, tpnotify, tpsendtocli, tpbroadcast)를 처리하는 WebtConnection이다.

Tmax 서버나 다른 클라이언트가 보낸 비요청 메시지를 수신하여 처리하기 위해서는 반드시 WebtEventConnection을 사용하여 Tmax 서버에 연결해야 하며 수신한 이벤트 메시지를 처리하기 위한 callback 메소드를 정의한 WebtEventHandler를 구현하고 WebtEventHandler의 setEventHandler 메소드를 사용하여 이벤트 핸들러를 등록해야 한다.

생성자

WebtEventConnecion 객체를 생성한다.

다음은 WebtEventConnecion 클래스의 생성자에 대한 설명이다.

  • 생성자1

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                 int hostPort)
    • 파라미터

      파라미터설명
      hostAddrhostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다.
      hostPort메인 Tmax 서버의 포트 번호이다.
  • 생성자2

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                 int hostPort, 
                                 boolean doConnect)
    • 파라미터

      파라미터설명
      hostAddr메인 Tmax 서버의 IP 주소로 hostAddr:hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection을 생성한다.
      hostPort메인 Tmax 서버의 포트 번호이다.
      doConnect
      • TRUE : WebtEventConnection 객체를 생성하면서 Tmax 서버로 연결을 시도한다.

      • FALSE: WebtEventConnection 객체를 생성하면서 Tmax 서버로 연결을 시도하지 않는다.

  • 생성자3

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                 int hostPort, 
                                 boolean doConnect, 
                                 int conntimeout)
    • 파라미터

      파라미터설명
      hostAddr메인 Tmax 서버의 IP 주소로 hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다.
      hostPort메인 Tmax 서버의 포트 번호이다.
      doConnect
      • TRUE : WebtEventConnection 객체를 생성하면서 Tmax 서버로 연결을 시도한다. 타임아웃 시간 내에 연결을 설정하지 못하였을 경우 예외상황(tperrno = TPETIME)이 발생한다.

      • FALSE: WebtEventConnection 객체를 생성하면서 Tmax 서버로 연결을 시도하지 않는다.

      conntimeout연결 설정 때의 타임아웃 시간이다. (단위 : 초)
  • 생성자4

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                int hostPort, 
                                int conntimeout)
    • 파라미터

      파라미터설명
      hostAddr메인 Tmax 서버의 IP 주소로 hostAddr:hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다. 타임아웃 시간 내에 연결을 설정하지 못하였을 경우 예외상황(tperrno = TPETIME)이 발생한다.
      hostPort메인 Tmax 서버의 포트 번호이다.
      conntimeout연결 설정 때의 타임아웃 시간이다. (단위 : 초)
  • 생성자5

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                 int hostPort, 
                                 String backupAddr, 
                                 int backupPort)
    • 파라미터

      파라미터설명
      hostAddr메인 Tmax 서버의 IP 주소로 hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다. hostAddr:hostPort로 연결을 설정하지 못하였을 경우 backupAddr:backupPort로 연결을 시도한다.
      hostPort메인 Tmax 서버의 포트 번호이다.
      backupAddr백업 Tmax 서버의 IP 주소이다.
      backupPort백업 Tmax 서버의 포트 번호이다.
  • 생성자6

    • 프로토타입

      public WebtEventConnection(String hostAddr,
                                 int hostPort, 
                                 String backupAddr, 
                                 int backupPort, 
                                 boolean doConnect, 
                                 int conntimeout)
    • 파라미터

      파라미터설명
      hostAddr

      메인 Tmax 서버의 IP 주소로 hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다. hostAddr:hostPort로 연결을 설정하지 못한 경우 backupAddr:backupPort로 연결을 시도한다.

      doConnect가 FALSE이면 연결을 시도하지 않는다.

      타임아웃 시간 내에 연결을 설정하지 못한 경우 예외상황(tperrno = TPETIME)이 발생한다.

      hostPort메인 Tmax 서버의 포트 번호이다.
      backupAddr백업 Tmax 서버의 IP 주소이다.
      backupPort백업 Tmax 서버의 포트 번호이다.
      doConnectTRUE이면 WebtEventConnection 객체를 생성하면서 Tmax 서버로 연결을 시도한다.
      conntimeout연결 설정 때의 타임아웃 시간이다. (단위 : 초)
  • 생성자7

    • 프로토타입

      public WebtEventConnection(String hostAddr, 
                                 int hostPort, 
                                 String username, 
                                 String userpwd, 
                                 String domainname, 
                                 String domainpwd)
    • 파라미터

      파라미터설명
      hostAddr

      메인 Tmax 서버의 IP 주소로 hostPort의 Tmax 서버로 연결을 설정한 WebtEventConnection 객체를 생성한다. 연결을 설정할 때 파라미터로 주어진 인증 정보를 사용하여 인증 절차를 수행한다.

      Tmax 서버에 등록된 username, userpwd, domainname, domainpwd 값과 일치했을 때 연결이 성공적으로 이루어진다.

      username사용자 인증 계정의 이름이다.
      userpwd사용자 인증 암호이다.
      domainname클라이언트의 이름이다.
      domainpwd시스템 접속 보안 암호이다.
  • 예외상황

    예외상황설명
    WebtIOException연결을 초기화하는 중 네트워크 오류가 발생하여 hostAddr:hostPort과 backupAddr:backupPort로 연결을 설정하지 못하거나 타임아웃 시간 내에 연결을 설정하지 못한 경우이다.
    WebtServiceException소켓 연결을 할 때 인터럽트가 발생한 경우이다.

메소드

다음은 WebtEventConnecion 클래스의 메소드 목록이다.

  • public boolean close()

    • Tmax와 소켓 연결을 종료한다. Connection Pool에서 관리되는 커넥션이면 연결을 종료하지 않고 Connection Pool에 반납하여 재사용한다.

  • public void setEventHandler(WebtEventHandler event [,int qlen])

    • 이벤트 메시지를 처리할 핸들러를 등록한다.

    • 파라미터

      파라미터설명
      event이벤트 메시지를 받았을 때 처리할 핸들러이다.
      qlen

      이벤트 메시지를 저장할 내부 Queue의 크기이다. (기본값: 2)

      Queue에 빈 슬롯이 없을 때 가장 오래된 메시지를 버린다.

    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceExceptionQueue의 크기가 0이거나 소켓 연결을 할 때 인터럽트가 발생한 경우이다.
  • public void setEventMask(int mask)

    • tpbroadcast(), tppost(), tpsendtocli(), tpnotify()가 송신한 이벤트 메시지 중 받고자 하는 메시지를 선택한다.

    • 파라미터

      파라미터설명
      mask

      WebtEventMask.EVENT_BROADCAST, WebtEventMask.EVENT_POST, WebtEventMask.EVENT_SENDTOCLI, WebtEventMask.EVENT_NOTIFY을 OR( | ) 조합을 한 값을 갖는다.

      해당 mask가 on되어야 해당 메시지를 수신하여 넘겨 준다. 이 함수를 수행하지 않을 경우 기본값은 WebtEventMask.EVENT_NONE(0)이며 아무 메시지도 넘겨주지 않는다. WebtEventMask.EVENT_ALL일 경우 모든 이벤트 메시지를 넘겨준다.

    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceException잘못된 파라미터가 입력된 경우이다.
  • void tpsubscribe(String eventName [,WebtAttribute attr])

    • tppost() 메시지를 수신하기 위해 post group에 가입한다.

    • 파라미터

      파라미터설명
      eventName수신할 tppost() 메시지의 post group의 이름이다.
      attrtpsubscribe()를 수행할 때 적용할 속성이다. 현재는 의미 있는 flags가 존재하지 않는다.
    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceExceptioneventName의 길이가 너무 길거나 인터럽트가 발생했을 경우이다.
  • void tpunsubscribe(String eventName [,WebtAttribute attr])

    • tppost 메시지를 받지 않기 위해 가입한 post group에서 탈퇴한다.

    • 파라미터

      파라미터설명
      eventName탈퇴할 post group의 이름이다.
      attrtpunsubscribe를 수행할 때 적용할 속성이다. 현재는 의미 있는 flags가 존재하지 않는다.
    • 예외상황

      예외상황설명
      WebtIOException네트워크 오류가 발생한 경우이다.
      WebtServiceException인터럽트가 발생한 경우이다.

예제

다음의 프로그램은 tppost 메시지를 수신하기 위한 이벤트 핸들러의 예제이다.

import tmax.webt.*;
 
public class EventSample implements WebtEventHandler {
    private WebtEventConnection connection;
    public EventSample(WebtEventConnection connection) {
          this.connection = connection;
 
          // tpbroadcast 이벤트만을 수신하기 위해 mask를 설정한다.
          connection.setEventMask(WebtEventConnection.EVENT_POST);
 
          // 이벤트 헨들러를 등록한다.
          connection.setEventHandler(this);
 
        // event에 가입한다.
        connection.tpsubscribe("posttest");
    }
 
    public void destroy() {
        connection.tpunsubscribe("posttest");
        connection.close();
    }
 
    // WebtEventHandler의 함수이다. 이벤트 메시지를 수신하면 이 메소드가 callback된다.
    public void handleEvent(int type, WebtBuffer buf, int len, int flags) {
         System.out.println("event received. type = " + type + ",
                             buffer type = " + buf.getBufferType());
         System.out.println("event msg : " + buf.getString());
    }
 
    // WebtEventHandler의 메소드이다. WebT가 이벤트를 처리하는 중 예외상황을 만나면 
    // 이 메소드를 callback한다. WebtIOException이 발생하였다면 Tmax 서버로의 연결이
    // 끊어졌을 수 있으므로 재연결 한다.
    public void handleError(WebtException e) {
          System.err.println("event error occured");
          e.printStackTrace();
          if (e instanceof WebtIOException) {
              if (e.getTPError() == WebtException.TPECLOSE) {
                  connection.close();
                  connection.connect();
             }
         }
   }
}

3.6.2. WebtEventHandler

WebtEventHandler는 Tmax 서버로부터 수신한 비요청 메시지를 처리할 때 사용하는 인터페이스이다. 비요청 메시지를 수신하기 위해서는 이 인터페이스를 구현해야 한다. 비요청 메시지는 tpsendtocli, tpbroadcast, tpnotify, tppost acall_reply가 있다.

필드

  • final int ACALLREPLY_TYPE

    • tpacall의 응답으로 수신한 데이터를 의미한다.

  • static final int BROADCAST_TYPE

    • tpbroadcast가 송신한 데이터를 의미한다.

  • static final int NOTIFY_TYPE

    • tpnotify가 송신한 데이터를 의미한다.

  • static final int POST_TYPE

    • tppost가 송신한 데이터를 의미한다.

  • static final int SENDTOCLI_TYPE

    • tpsendtocli가 송신한 데이터를 의미한다.

메소드

다음은 WebtEventHandler 클래스의 메소드 목록이다.

  • void handleError(WebtException e)

    • 비요청 메시지 처리 중 오류가 발생한 경우 이 handleError 메소드가 호출된다. 발생하는 오류는 대부분 네트워크 오류이다.

    • 파라미터

      파라미터설명
      eException 객체이다.
  • void handleEvent(int type, WebtBuffer buf, int len, int flags)

    • WebtEventConnection.setEventMask(int)에 의해 선택된 비요청 메시지가 수신되면 이 handleEvent 메소드가 callback된다.

    • 파라미터

      파라미터설명
      typePOST_TYPE, BROADCAST_TYPE, NOTIFY_TYPE, SENDTOCLI_TYPE, ACALLREPLY_TYPE 중 하나이다.
      buf비요청 메시지의 내용을 담은 WebtBuffer이다.
      len비요청 메시지 길이이다.
      flags비요청 메시지에 설정된 flags값이다.

3.7. 그 외의 클래스

3.7.1. WebtTransaction

WebtTransaction 클래스는 여러 서비스를 하나의 작업 단위로 묶어서 처리할 수 있도록 API를 제공하고 예외상황의 발생을 처리한다.

생성자

WebtTransaction 객체를 생성한다.

다음은 WebtTransaction 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    public WebtTransaction(WebtConnection conn)
  • 파라미터

    파라미터설명
    conn트랜잭션이 이루어질 WebtConnection 객체이다.

메소드

다음은 WebtTransaction 클래스의 메소드 목록이다.

  • public int begin()

    • 전역 트랜잭션을 시작하는 함수로 TX 함수 int tx_begin()와 동일한 기능을 수행한다.

    • 예외상황

      예외상황설명
      WebtTXException이미 트랜잭션이 시작되었을 때 발생한다.
  • public int commit()

    • 전역 트랜잭션을 Commit하는 함수로 TX 함수 int tx_commit()와 동일한 기능을 수행한다.

    • 예외상황

      예외상황설명
      WebtTXException트랜잭션이 시작되지 않은 상태일 때, 네트워크에 오류가 있을 때, Tmax 서버에서 트랜잭션 관련 오류가 있을 때 발생한다.
  • public int rollback()

    • 전역 트랜잭션을 Rollback하는 함수로 TX 함수 int tx_rollback()와 동일한 기능을 수행한다.

    • 예외상황

      예외상황설명
      WebtTXExceptiontx_begin이 안된 상태일 때, 네트워크에 오류가 있을 때, Tmax 서버에서 트랜잭션관련 오류가 있을 때 발생한다.
  • public int getBlockTimeout()

    • commit 메소드와 rollback 메소드를 호출할 때 적용될 타임아웃 시간을 반환한다.

  • int getTimeout()

    • 트랜잭션의 타임아웃 시간을 반환한다.

  • public boolean isChained()

    • chain control 여부를 반환한다.

      반환값설명
      TRUETX_CHAINED가 설정되었음을 의미한다.
      FALSETX_UNCHAINED가 설정되었음을 의미한다.
  • public void setBlockTimeout(int timeout)

    • commit 메소드와 rollback 메소드를 호출할 때 적용될 타임아웃 시간을 지정한다.

    • 파라미터

      파라미터설명
      timeout타임아웃 시간이다. (단위 : Millisecond)
  • public void setChained(boolean value)

    • chain control을 수행한다.

    • 파라미터

      파라미터설명
      value

      chain control 값이다.

      • TRUE : TX 메소드 int tx_set_transaction_control(TX_CHAINED)와 동일한 기능을 수행한다.

      • FALSE : TX 메소드 int tx_set_transaction_control(TX_UNCHAINED)와 동일한 기능을 수행한다.

  • public void setTimeout(int timeout)

    • 트랜잭션의 타임아웃 시간을 지정한다. setTimeout 함수를 통해 별도로 타임아웃 시간을 지정하지 않으면 Tmax 환경설정 파일의 TXTIME으로 지정된 값이 적용된다.

    • 파라미터

      파라미터설명
      timeout타임아웃 값이다. (단위 : Millisecond)

참고

TX 함수에 대한 자세한 내용은 "Tmax Application Development Guide"를 참고한다.

3.7.2. WebtSystem

WebT 시스템의 버전, Character Set, 필드 키 테이블 등의 정보를 관리하는 클래스이다.

생성자

WebtSystem 객체를 생성한다.

다음은 WebtSystem 클래스의 생성자에 대한 설명이다.

  • 프로토타입

    public WebtSystem()

메소드

다음은 WebtSystem 클래스의 메소드 목록이다.

  • public static void createDefaultFieldKeyTable(String fdlfile)

    • 필드 키 테이블을 생성한다.

    • 파라미터

      파라미터설명
      fdlfilefdl 파일의 경로이다.
    • 예외상황

      예외상황설명
      java.io.IOExceptionfdl 파일을 찾지 못하거나 읽을 때 오류가 발생한 경우이다.
  • public static String getDefaultCharset()

    • WebT 시스템의 기본 Character Set을 반환한다.

  • public static WebtFDLKeyTable getDefaultFieldKeyTable()

    • 기본 필드 키 테이블을 반환한다.

  • public static void main(String[ ] argv)

    • WebtSystem을 수행하면 WebT 버전 정보를 standard out으로 출력한다.

  • public static void setDefaultCharset(String charset)

    • WebT에서 사용할 기본 Character Set을 지정한다.

    • WebtService 객체나 WebtRemoteService 객체를 생성할 때 Character Set을 지정하지 않으면 이 setDefaultCharset 메소드로 지정한 값을 기본값으로 한다.

    • 파라미터

      파라미터설명
      charset기본 Character Set이다.
  • public static String version()

    • WebT 버전을 반환한다.