XA 라이브러리와 게이트웨이

본 장에서는 XA 라이브러리와 XA 게이트웨이에 대한 개념과 환경설정 방법에 대해서 설명한다.

1. 개념

X/Open XA는 2PC(2 Phase Commit)를 통한 분산 트랜잭션 처리를 위해 X/Open에서 명시한 표준이다. XA는 DBMS 벤더별로 제공하고 있으며, 이 표준 규약을 통해서 이기종 간의 트랜잭션이 보장된다. Tmax에서는 이러한 XA 라이브러리와 XA 게이트웨이를 통해 XA를 제공함으로서 이기종과의 2PC를 보장한다.

1.1. XA 라이브러리

Tmax의 XA를 사용하기 위해서는 XA 라이브러리를 사용하여 Tmax의 서비스를 처리해야 한다. 라이브러리는 Tmax의 클라이언트 라이브러리와는 조금 다른 형태로 XA 게이트웨이와 통신한다. 기본 XA 인터페이스는 Tmax의 xa-switch명인 tmaxxaosw를 사용하여 처리되며 이외에 Tmax의 서비스를 처리할 수 있도록 tpcall/tpacall/tpgetrply API를 추가적으로 지원한다. 라이브러리는 현재 MultiThread를 지원하지 않는다.

1.2. XA 게이트웨이

XA 라이브러리에서 올라온 데이터를 처리하기 위한 모듈로 Tmax 시스템에서는 XA 게이트웨이가 추가적으로 기동된다.

다음은 XA 게이트웨이가 Tmax 시스템에서 서비스를 처리하는 과정을 보여준다.

figure 1 1
Figure 1. XA 게이트웨이 서비스 처리 과정

XA 게이트웨이는 Tmax의 환경 파일에 설정한 Listen 포트로 XA 라이브러리를 이용하여 애플리케이션의 요청을 기다린다. 게이트웨이는 트랜잭션을 처리하며 Tmax 서비스를 호출할 수 있다.

2. 환경설정

본 절에서는 XA 라이브러리와 XA 게이트웨이의 환경설정 방법에 대해 설명한다.

2.1. XA 라이브러리

XA 라이브러리명은 <libtxa.so>이다.

Tmax 시스템과 연동하여 트랜잭션을 처리할 애플리케이션은 Tmax의 XA 라이브러리를 함께 연결하여 사용해야 한다.

또한 애플리케이션이 Tmax의 버퍼형인 FIELD/STRUCT형 버퍼를 사용할 때는 환경변수로 SDLFILE 또는 FDLFILE을 다음과 같이 설정해야 한다.

export SDLFILE=/usr/home/tmax/tmax.sdl
export FDLFILE=/usr/home/tmax/tmax.fdl

Tmax에서 제공하는 XA 라이브러리를 이용하여 XA API를 사용하려면 xa-switch를 설정해야 한다. xa-swtch명은 tmaxxaosw로서 Tmax와 트랜잭션을 연동할 애플리케이션에서 설정한다. XA 라이브러리 설정 예제와 실제 애플리케이션에서 이 라이브러리를 연동하는 Makefile은 예제를 참조한다.

항목들은 구분자(+)로 구별하여 각각 설정해야 한다.

필수 항목

아래의 field는 대소문자를 구별하므로 반드시 아래의 문자열로 설정해야 한다.

  • host = ip:port

    • XA 게이트웨이가 listen하고 있는 IP와 포트 정보는 구분자인 콜론(:)으로 구별하여 설정한다.

    • IPv6 프로토콜을 사용할 경우에는 IP와 포트 번호를 구분하기 위해서 IP 주소에 대괄호 ([ ])로 감싸준다. 또한 ipv6 항목을 'y’로 설정한다.

      host = [2011::100:200]:9500+ipv6=y

선택 항목

  • timeout = int_value

    • timeout 값은 XA API를 사용할 때 TMNOWAIT이 아닌 경우 이 설정으로 타임아웃을 체크하게 되며 tpcall, tpacall, tpgetrply을 사용하는 경우도 마찬가지로 적용된다.

      tpcall, tpacall, tpgetrply에 대한 자세한 설명은 각각 tpcall, tpacall, tpgetrply를 참고한다.

  • ipv6 = [y|n]

    • 사용하는 프로토콜을 설정한다.

    • 다음은 설정값에 대한 설명이다.

      설정값 설명

      y

      호스트가 IPv6 프로토콜인 경우 설정한다.

      n

      설정하지 않거나 'N으로 설정하면 IPv4 프로토콜을 사용하여 host로 접속한다.

2.2. XA 게이트웨이

XA 게이트웨이는 Tmax의 게이트웨이로 동작을 하며 다른 게이트웨이와 마찬가지로 Tmax의 환경 파일에 등록을 해야 한다.

XA 게이트웨이는 Tmax의 환경 파일 중 GATEWAY 절에 다음과 같이 등록을 해야 한다.

*GATEWAY
Gateway Name    GWTYPE = { TMAX | TMAXNONX | SNACICS | OSITP | JEUS
                          JEUW_ASYNC | TUXEDO | TUXEDO_ASYNC | WSGW | XAGW }
                PORTNO = Listen_port
                NODENAME = 노드명
                [DIRECTION = (BIDIR) | IN | OUT,]
                [TIMEOUT = second,]
                [LOCAL_IPV6 = Y | N]

필수 항목

항목은 대소문자를 구별하므로 반드시 다음의 문자열로 설정해야 한다.

  • Gateway Name = string

    • GATEWAY 절에는 반드시 GWNAME이 설정되어야 한다. 16자를 넘지 않아야 하며, 알파벳으로 시작해야 한다.

  • GWTYPE = string

    • 이 필드는 여러 Tmax의 게이트웨이 타입 중에 어떤 게이트웨이 타입인지를 설정하는 것으로 XA 게이트웨이를 사용할 때는 'XAGW’로 설정해야 한다.

  • PORTNO =Listen_port

    • XA 게이트웨이가 listen할 포트를 설정하며, 이 포트는 xa_open string의 호스트 설정과 동일한 값이어야 한다.

  • NODENAME = 노드명

    • XA 게이트웨이가 기동할 노드명을 설정하며, 노드의 IP는 xa_open string의 호스트 설정과 동일한 값이어야 한다.

각 설정 항목에 대한 자세한 내용은 Administration Guide의 환경 파일 설정을 참고한다.

선택 항목

  • DIRECTION = IN

    • XA 게이트웨이는 IN 채널만 지원하는 게이트웨이이므로 반드시 설정값은 'IN’으로 설정해야 한다.

  • TIMEOUT = numeric

    • 범위 : 1 ~ 128

    • 기본값 : 1

    • 단위 : 초

    • 게이트웨이를 이용하는 경우 양 도메인의 CLH 프로세스 간 병령 통신 채널 수를 지정한다.

    • 게이트웨이 프로세스가 처리량이 아주 많고 서비스의 소요시간이 길 경우 다중 채널을 두어 병렬 통신으로 처리하여 처리속도를 증가시킬 수 있다. TMAXNONTX 타입의 게이트웨이의 경우 2~3개 이하의 CPC로도 충분하다.

  • LOCAL_IPV6 = [Y | N]

    • XA 게이트웨이가 listen 소켓을 생성할 때 IPv6 프로토콜을 사용할 것인지 여부를 설정한다.

    • 다음은 설정값에 대한 설명이다.

      설정값 설명

      Y

      IPv6 프로토콜을 사용하는 경우 설정한다.

      N

      설정하지 않거나 'N’으로 지정하면 IPv4 프로토콜을 사용한다.

각 설정 항목에 대한 자세한 내용은 Administration Guide의 환경 파일 설정을 참고한다.

설정 예제

다음은 XA 게이트웨이 설정에 대한 예제이다.

*GATEWAY
XAGW1           GWTYPE = XAGW,
                PORTNO = 10042,
                NODENAME = tmax1,
                DIRECTION = IN,
                TIMEOUT = 30,
                CPC=5,
                LOCAL_IPV6 = N