JMS 트랜잭션성

JMSOutput 노드에서 메시지를 수신하거나 JMSInput 노드로 메시지를 제공하는 JMS 목적지는 메시지 플로우 전역 트랜잭션의 일부로 통합되는 동기점이 될 수 있습니다.

동기점 조정자와 관련된 트랜잭션

동기점 조정자를 포함하여 JMSInput 노드 및 JMSOutput 노드를 통해 메시지 플로우를 표시하는 다이어그램.

이 다이어그램에서, 메시지는 JMSInput 드에 의해 토픽에서 이용되고 JMS 큐나 JMSOutput 노드에 생성됩니다. 노드는 JMS 제공자로 연결되며 JMS 제공자가 있는 세션에 있습니다. 메시지 플로우 입력 노드는 메시지 플로우 트랜잭션이 시작하고 끝날 때, 그리고 플로우가 접촉한 자원을 확약 또는 롤백해야 하는지 여부를 외부 동기점 조정자에 알릴 수 있습니다.

동기점 조정자는 XA/Open 준수 요청을 참여하는 모든 자원 관리자에 송신하여 준비하도록 알립니다. 그런 다음, 변경사항이 커미트 또는 롤백됩니다. WebSphere MQ, DB2 및 XA 준수 JMS 제공자와 같은 자원 관리자가 전역 트랜잭션에 참여할 수 있습니다. 외부 동기점 조정자는 분산 플랫폼의 WebSphere MQ와 z/OS의 RRS(Resource Recovery Services)입니다.

JMSInput 노드와 JMSOutput 노드는 노드가 연결하는 JMS 제공자가 JMS XAResource Class를 통해 XA/Open 인터페이스를 지원할 경우에만 전역 트랜잭션에 참여할 수 있습니다. JMS 제공자의 예로 WebSphere MQ Java 클라이언트가 있습니다.

인다우트(In-doubt) 트랜잭션

인다우트(in-doubt) 트랜잭션은 호출이 자원을 확약하거나 롤백하는 동기점 관리자의 호출에 자원 관리자가 응답하지 않을 경우 발생할 수 있습니다. 브로커의 WebSphere MQ 큐 관리자를 시작하는 동안, 브로커 메시지 플로우가 새 입력 처리를 시작하기 전에 인다우트(in-doubt) 트랜잭션이 해석되도록 초기 복구 단계가 수행됩니다. 브로커 전역 트랜잭션에 참여하는 JMS 제공자는 이 복구 단계에 포함됩니다.

전역 트랜잭션 지원을 사용하는 구성

JMSInput 및 JMSOutput 노드에 대한 전역 트랜잭션 지원을 사용하려면 추가 구성이 필요합니다. 다음 단계를 완료해야 합니다.
  1. 메시지 플로우 등록 정보 통합 트랜잭션로 설정하십시오.
  2. 전역 트랜잭션에 참여하기 위해 필요한 JMSInput 또는 JMSOutput 노드마다 고급 등록 정보 트랜잭션 모드전역으로 설정하십시오.
  3. 큐 연결 팩토리를 작성하고 디폴트 이름, recoverXAQCF를 제공하거나 사용자 정의 이름을 제공하십시오. JNDI 관리 대상 오브젝트 작성에 대한 자세한 내용은 JMSInput 또는 JMSOutput 노드를 참조하십시오.
  4. 분산 플랫폼에서는 전개 이전에 WebSphere MQ 관리 작업이 필요합니다. 이 작업은 큐 관리자에 대해 브로커 구성요소를 등록하기 위해 필요합니다. 구성요소(스위치 파일이라고 함)는 공유 라이브러리(Windows의 DLL)입니다.

    브로커의 WebSphere MQ 큐 관리자가 시작하면 스위치 파일이 로드됩니다. 스위치 파일은 동기점 조정자에서 JMS 제공자로 XA/Open 트랜잭션 호출을 전달합니다. 이로써 트랜잭션에 참여하는 JMS 자원은 동일 트랜잭션에 포함된 다른 자원 관리자와의 동기화에 통합될 수 있습니다.

    작업은 플랫폼마다 다릅니다.
    • Linux 및 UNIX
      JMSInput 노드가 사용할 수 있는 각 JMS 제공업체의 브로커 큐 관리자의 경우, 스탠자 입력 항목을 초기화 파일(예: qm.ini)에 두십시오. 다음은 JMS 제공업체로 WebSphere MQ Java 를 사용하는 경우 추가할 수 있는 스탠자 입력 항목의 예입니다.
      XAResourceManager:
      	Name=WBIWMQJMS 
          SwitchFile=/<Installation Path>/lib/JMSSwitch.so
          XAOpenString=<Initial Context Factory>,
                    <location of JNDI bindings>'
                    <LDAP Principal>,
                    <LDAP Credentials>,
                    <Recovery Connection Factory Name>  
              ThreadOfControl=THREAD 
      여기서:

      <Installation Path>WebSphere Message Broker 설치의 위치입니다. 이 값은 필수입니다.

      XAOpenString에 제공되는 매개변수는 쉼표로 분리되며 위치 영향을 받습니다. 누락된 선택 매개변수는 다른 매개변수들이 문자열에서 나중에 제공될 경우 쉼표로 표시해야 합니다.
      • <Initial Context Factory>는 JMS 제공자에 대한 초기 컨텍스트 팩토리 ID입니다. 이 값은 필수입니다.
      • <Location of JNDI bindings>는 바인딩 파일의 파일 경로이거나 JMS 연결의 초기 컨텍스트 팩토리를 작성하는 데 사용할 수 있는 JNDI 관리 대상 오브젝트의 LDAP 디렉토리 위치입니다. 바인딩 파일에 파일 경로 제공 시 파일 이름은 포함하지 마십시오. JNDI 관리 대상 오브젝트 작성에 대한 세부사항은 JMSInput 또는 JMSOutput 노드를 참조하십시오. 이 값은 필수입니다.
      • <LDAP Principal>은 JNDI 관리 대상 오브젝트를 보유하기 위해 LDAP 데이터베이스를 사용할 때 필요한 프린시펄(사용자 ID)을 지정하는 데 사용되는 선택적 매개변수입니다.
      • <LDAP Credentials>는 JNDI 관리 대상 오브젝트를 보유하기 위해 LDAP 데이터베이스를 사용할 때 필요한 신임(암호)을 지정하는 데 사용되는 선택적 매개변수입니다.
      • <Recovery Connection Factory Name>은 디폴트가 아닌 이름이 필요할 때 복구 목적으로 JNDI 관리 대상 오브젝트에서 큐 연결 팩토리 오브젝트의 이름을 지정하는 데 사용되는 선택적 매개변수입니다.

      사용하려는 JMS 제공자마다 브로커의 큐 관리자 .ini 파일에서 스탠자를 지정해야 합니다. 즉, JMS 제공자가 브로커에서 실행 중인 메시지 플로우에 포함된 JMSInput 또는 JMSOutput 노드에서 지정할 수 있는 새 JMS 제공자마다 하나의 스탠자가 있어야 합니다.

      스탠자에 있는 JNDI 바인딩의 위치 및 초기 컨텍스트 팩토리 값은 메시지 플로우에서 JMSInput 또는 JMSOutput 노드에 지정한 값과 일치해야 합니다.

      LDAP 매개변수는 mqsicreatebroker 또는 mqsichangebroker 명령을 사용하여 지정한 값과 일치해야 합니다.

      복구 팩토리 이름은 JNDI 관리 대상 오브젝트에서 작성한 큐 연결 팩토리 이름과 일치해야 합니다. 생략하면 디폴트 팩토리인 recoverXAQCF가 사용됩니다. 어떠한 경우에든, 이 값은 이미 작성된 JNDI 관리 오브젝트를 참조해야 합니다.

      다음은 스탠자 예입니다.

      XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory,
           /u/myJndiFileLocation,
           ,
           ,
           myRecoveryQCFName    
      여기에서 LDAP 매개변수는 생략되어 있지만 복구를 위해 사용자가 정의한 큐 연결 팩토리가 지정되어 있습니다.
    • Windows 플랫폼에서

      Linux 및 UNIX와 같이 Windows에서 동일한 정보가 필요하지만 사용 중인 WebSphere MQ 버전에 따라 WebSphere MQ 탐색기 또는 WebSphere MQ 서비스 스냅인을 사용하여 이 정보를 구성합니다. Windows에서, 스위치 파일은 JMSSwitch.dll입니다. qm.ini 파일을 갱신하는 방법에 대한 자세한 내용은 WebSphere MQ 시스템 관리 안내서를 참조하십시오. 추가 입력 항목(XACloseString)이 XAOpenString에 제공된 값과 일치해야 합니다.

    • z/OS 에서

      WebSphere Message Broker에서 현재 유일하게 지원되는 JMS 제공자는 IBM WebSphere MQ Java Client입니다. 클라이언트에 대해 현재 지원되는 유일한 전송 모드는 BIND 모드입니다. 더 이상 추가 구성 단계는 필요없습니다.

    자세한 정보는 JMSInput 노드 및 JMSOutput 노드 토픽의 통합 트랜잭션 섹션 구성 섹션을 참조하십시오.
  5. JMS 제공자는 트랜잭션 지원을 위해 필요한 추가 jar 파일을 제공할 수 있습니다. 자세한 정보는 JMS 제공자 문서를 참조하십시오. 예를 들어, 분배된 플랫폼(z/OS 이외)에서 WebSphere MQ JMS 제공자는 추가 jar 파일 com.ibm,mqetclient.jar을 제공합니다. 이 jar도 브로커 shared_classes 디렉토리에 추가해야 합니다. Windows에서 이 디렉토리는 C:\Documents and Settings\All Users\Application Data\IBM\MQSI\shared-classes입니다. 자세한 정보는 JMSInput 노드 주제에서 JMS 노드가 JMS 제공자 클라이언트를 사용할 수 있도록 만들기 절을 참조하십시오.

JMS 제공자 선택

트랜잭션 통합이 필요한 경우, JMS(Java Message Service) 스펙, 버전 1.1을 준수하고 JMS 세션을 통해 JMS XAResource API를 지원하는 모든 JMS 제공자를 사용할 수 있습니다.

메시지 설계자가 비 XA 준수 제공자를 지정한 경우에는 비 트랜잭션 모드만 지원됩니다. 이 경우, 모든 JMSInput 및 JMSOutput 노드에 대해 트랜잭션 모드 등록 정보를 아니오로 설정해야 합니다.

관련 참조
JMS 메시지 유형
JMS 메시지 구조
JNDI 관리 오브젝트
JMSInput 노드
JMSOutput 노드
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac24879_