본 장에서는 MultipleRM의 개요 및 관련된 설정에 대한 설명한다.
XA 서버의 경우 한 서버 그룹 안의 서버들은 서버 그룹에 설정한 동일한 하나의 RM만이 접근 가능하여 트랜잭션을 처리하는 것이 Tmax의 기본 정책이다. 하지만 불가피하게 한 프로세스에서 2개 이상의 RM을 이용할 경우 하나의 트랜잭션으로 처리하는 것이 불가능했다. 한 프로세스에서 2개 이상의 RM 혹은 같은 RM이지만 2개 이상의 인스턴스를 사용하는 트랜잭션을 한 트랜잭션으로 포함할 수 있도록 하기 위해서 서버 라이브러리의 기능을 확장했다. 이러한 MultipleRM을 지원하기 위해서 기존의 TCS, UCS 서버 라이브러리를 이용하므로 기능을 그대로 사용할 수 있다.
본 절에서는 XA 서버와 MultipleRM 애플리케이션 서버의 트랜잭션 처리 방법에 대해 설명한다.
다음은 XA 서버의 트랜잭션 처리 과정이다.
XA 서버에서는 부트할 때 xa_open, 서비스를 요청할 때 xa_start → 'RM 작업' → xa_end까지 수행하고 실제 xa_prepare, xa_commit은 서버가 속한 해당하는 서버 그룹의 TMS가 작업을 수행한다.
MultipleRM 설정을 이용해 개발한 XA 서버는 다수의 RM에 접속해서 트랜잭션을 시도한다.
다음은 MultipleRM 애플리케이션 서버의 트랜잭션 처리과정이다.
부트할 때 등록한 모든 RM에 xa_open을 수행한다. 서비스를 요청할 때 CLH에서 RM 수에 따라서 xid를 발급하고 서버에서는 발급한 xid로 모든 RM에 xa_start를 처리한다. 서비스를 종료할 때 모든 RM에 xa_end 처리를 한다. 그 이후의 작업은 기존처럼 등록된 TMS가 xa_prepare, xa_commit 처리를 한다 .
MultipleRM은 다음과 같은 제약 사항이 존재한다.
COUSIN 설정을 지원하지 않는다.
다음의 함수를 지원하지 않는다.
tpsuspendtx
tpresumetx
데이터베이스는 Oracle과 Tibero만을 지원한다.