JMSOutput 노드에서 메시지를 수신하거나 JMSInput 노드로 메시지를 제공하는 JMS 목적지는 메시지 플로우 전역 트랜잭션의 일부로 통합되는 동기점이 될 수 있습니다.
다음 그림에서, 메시지는 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 Client가 있습니다.
브로커의 WebSphere MQ 큐 관리자를 시작하는 동안, 브로커 메시지 플로우가 새 입력 처리를 시작하기 전에 인다우트(in-doubt) 트랜잭션이 해석되도록 초기 복구 단계가 수행됩니다. 인다우트(in-doubt) 트랜잭션은 자원을 확약하거나 롤백하기 위한 동기점 관리자의 호출에 자원 관리자가 응답하지 않을 경우 발생할 수 있습니다. 브로커 전역 트랜잭션에 참여하는 JMS 제공자는 브로커의 큐 관리자를 시작하는 동안 이 복구 단계에 포함됩니다.
스위치 파일은 동기점 통합자에서 JMS 제공자로 XA/Open 트랜잭션 호출을 전달합니다. 이로써 트랜잭션에 참여하는 JMS 자원은 동일 트랜잭션에 포함된 다른 자원 관리자와의 동기화에 통합될 수 있습니다.
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 브로커 설치의 위치입니다. 이 값은 필수입니다. XAOpenString에 제공되는 매개변수는 쉼표로 분리되며 위치 영향을 받습니다. 누락된 선택 매개변수는 다른 매개변수들이 문자열에서 나중에 제공될 경우 쉼표로 표시해야 합니다.
<Initial Context>는 JMS 제공자에 대한 초기 컨텍스트 팩토리 ID입니다. 이 값은 필수입니다.
<Location of>는 .bindings 파일의 파일 경로(파일 이름 자체는 포함하지 않음)나 JMS 연결의 초기 컨텍스트 팩토리를 작성하는 데 사용할 수 있는 JNDI 관리 대상 오브젝트의 LDAP 디렉토리 위치입니다. JNDI 관리 대상 오브젝트 작성에 대한 세부사항은 JMSInput 또는 JMSOutput 노드를 참조하십시오. 이 값은 필수입니다.
<LDAP Principal>은 JNDI 관리 대상 오브젝트를 보유하기 위해 LDAP 데이터베이스를 사용할 때 필요한 프린시펄(사용자 ID)을 지정하기 위한 선택 매개변수입니다.
<LDAP Credentials>는 JNDI 관리 대상 오브젝트를 보유하기 위해 LDAP 데이터베이스를 사용할 경우 필요할 수 있으며 암호로 보호되는 신임(암호)을 지정하기 위해 사용하는 선택 매개변수입니다.
<Recovery Factory>는 디폴트가 아닌 이름이 필요할 때 복구 목적으로 JNDI 관리 대상 오브젝트에서 큐 연결 팩토리 오브젝트의 이름을 지정하기 위해 사용되는 선택 매개변수입니다.
사용할 JMS 제공자마다 브로커 큐 관리자 “.ini” 파일에서 스탠자를 지정해야 합니다, 이는 새 JMS 제공자마다 하나의 스탠자가 있어야 함을 의미합니다. 스탠자는 해당 브로커에서 실행 중인 메시지 플로우에 포함된 JMSInput 또는 JMSOutput 노드에서 지정할 수 있습니다.
스탠자에 있는 JNDI 바인딩의 위치 및 초기 컨텍스트 팩토리 값은 메시지 플로우에서 JMSInput 또는 JMSOutput 노드에 지정한 값과 일치해야 합니다.
마찬가지로 LDAP 매개변수는 해당 브로커에 대한 mqsicreatebroker 또는 mqsichangebroker 명령을 사용하여 지정한 값과 일치해야 합니다.
복구 팩토리 이름은 JNDI 관리 대상 오브젝트에서 작성한 큐 연결 팩토리 이름과 일치해야 합니다. 생략하면 디폴트 팩토리인 "recoveryQCF"가 사용됩니다. 어느 경우에든지 이 값은 이전에 작성된 JNDI 관리 대상 오브젝트여야 합니다. 예를 들면 다음과 같습니다.
XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory, /u/myJndiFileLocation, , , myRecoveryQCFName여기에서 LDAP 매개변수는 생략되어 있지만 복구를 위해 사용자가 정의한 큐 연결 팩토리가 지정되어 있습니다.
동일 정보가 필요하지만 레지스트리에 세부사항을 추가하기 위해 WebSphere MQ Services 스냅인을 사용하여 이 정보를 구성합니다. 이 경우 스위치 파일은 JMSSwitch.dll입니다. qm.ini 파일을 갱신하는 방법에 대한 세부사항은 WebSphere MQ System Administration Guid를 참조하십시오. 이 경우에는 추가 “스탠자” 입력 항목 XACloseString이 XAOPenString에 제공된 값과 일치해야 합니다.
WebSphere Event Broker에서 현재 유일하게 지원되는 JMS 제공자는 IBM WebSphere MQ Java Client입니다. 클라이언트에 대해 현재 지원되는 유일한 전송 모드는 BIND 모드입니다. 더 이상 추가 구성 단계는 필요없습니다.
이 구현을 위한 디폴트 JMS 제공자는 WebSphere MQ입니다. 그러나 트랜잭션 통합이 필요하면 모든 JMS 제공자를 사용할 수 있으며, JMS 1.1 스펙을 준수하는 경우 JMS 세션을 통해 JMS XAResource API를 지원합니다.
그러나 메시지 설계자가 비 XA 준수 제공자를 지정한 경우에는 비 트랜잭션 모드만 지원되므로 설계자는 모든 JMSInput 및 JMSoutput 노드에 대해 고급 등록 정보인 트랜잭션 모드를 아니오로 설정해야 합니다.