XMS 응용프로그램은 로컬 트랜잭션을 실행할 수 있습니다. 로컬 트랜잭션은 응용프로그램이 연결된 대기열 관리자나 서비스 통합 버스의 자원에 대한 변경사항만 포함하는 트랜잭션입니다.
이 주제의 내용은 응용프로그램이 WebSphere MQ 대기열 관리자 또는 WebSphere 서비스 통합 버스에 연결된 경우에만 해당됩니다. 브로커에 실시간으로 연결된 경우에는 해당되지 않습니다.
로컬 트랜잭션을 실행하기 위해 응용프로그램은 Connection 오브젝트의 Create Session 메소드를 호출하여 트랜잭트되는 세션을 먼저 작성해야 합니다. 그런 다음 작성된 세션이 트랜잭트되는 매개변수를 지정해야 합니다. 결과적으로 세션 내에서 전송 및 수신된 모든 메시지는 트랜잭션의 순서로 그룹화됩니다. 트랜잭션이 시작된 이후 응용프로그램에서 전송하거나 수신한 메시지를 확액 또는 롤백하면 트랜잭션이 끝납니다.
트랜잭션을 확약하기 위해 응용프로그램은 Session 오브젝트의 Commit 메소드를 호출합니다. 트랜잭션이 확약되면 트랜잭션 내에서 전송된 모든 메시지를 다른 응용프로그램에 전달할 수 있으며, 트랜잭션 내에서 수신한 모든 메시지는 수신확인되므로 메시징 서버는 메시지를 응용프로그램에 다시 전달하려고 시도하지 않습니다. 그리고 지점간 도메인에서 메시징 서버는 수신된 메시지를 대기열에서 제거합니다.
트랜잭션을 롤백하기 위해 응용프로그램은 Session 오브젝트의 Rollback 메소드를 호출합니다. 트랜잭션이 롤백되면 메시징 서버는 트랜잭션 내의 전송된 모든 메시지를 버리며, 트랜잭션 내의 수신된 모든 메시지는 다시 전달할 수 있게 됩니다. 지점간 도메인의 경우 수신한 메시지는 해당 대기열에 다시 들어가며 다른 응용프로그램해 다시 볼 수 있게 됩니다.
응용프로그램이 트랜잭트된 세션을 작성하거나 Commit 또는 Rollback 메소드를 호출하면 새로운 트랜잭션이 자동으로 시작됩니다. 따라서 트랜잭트된 세션은 항상 활성 트랜잭션을 가지게 됩니다.
응용프로그램이 트랜잭트된 세션을 닫으면 내부 롤백이 발생합니다. 응용프로그램이 연결을 닫으면 모든 연결의 트랜잭트된 세션에 대해 내부 롤백이 발생합니다.
트랜잭션 전체가 트랜잭트된 세션 내에 포함됩니다. 트랜잭션은 여러 세션에 걸칠 수 없습니다. 즉, 응용프로그램이 두 개 이상의 트랜잭트된 세션에서 메시지를 전송 및 수신할 수 없기 때문에 이러한 모든 조치를 단일 트랜잭션으로 확약하거나 롤백할 수 없음을 의미합니다.