Sun Java System Message Queue 3.7 UR1 관리 설명서

클라이언트 아이디

표 16–4에 나열된 연결 팩토리 속성은 클라이언트 인증과 영구 가입자의 클라이언트 식별자 설정을 지원합니다.

클라이언트 인증

메시지 서비스에서 관리하는 사용자 저장소에 대해 사용자 이름 및 비밀번호를 사용하여 브로커에 연결하려는 모든 시도를 인증해야 합니다. 연결 팩토리 속성 imqDefaultUsernameimqDefaultPassword는 연결을 생성할 때 클라이언트가 명시적으로 제공하지 않을 경우 사용할 기본 사용자 이름 및 비밀번호를 지정합니다.

응용 프로그램 개발 및 테스트 중 사용자 저장소 채우기를 번거롭게 여기는 개발자의 편의를 제공하기 위해 Message Queue는 사용자 이름과 비밀번호가 모두 guest인 guest 사용자 계정을 제공합니다. 또한 이 값은 imqDefaultUsernameimqDefaultPassword 속성의 기본값이기도 하므로, 명시적으로 지정되지 않은 경우 클라이언트는 항상 guest 계정으로 연결을 설정할 수 있습니다. 작업 환경에서 브로커 연결 액세스는 사용자 저장소에 명시적으로 등록되어 있는 사용자로만 제한되어야 합니다.

클라이언트 식별자

Java Message Service 사양에서는 브로커가 클라이언트를 대신하여 지속성 상태를 유지해야 할 때마다 연결이 고유한 클라이언트 식별자를 제공하도록 규정합니다. Message Queue는 이러한 클라이언트 식별자를 사용하여 주제 대상에 대한 영구 가입자를 추적합니다. 영구 가입자가 비활성 상태인 경우 브로커는 주제에 대한 모든 수신 메시지를 보관했다가 가입자가 다시 활성화되면 전달합니다. 브로커는 클라이언트 식별자로 가입자를 식별합니다.

클라이언트 응용 프로그램이 연결 객체의 setClientID 메소드를 사용하여 프로그래밍 방식으로 고유의 클라이언트 식별자를 설정할 수 있지만, 각 식별자가 고유하도록 클라이언트 식별자를 조정하기는 어렵습니다. 일반적으로는 클라이언트를 대신하여 연결을 생성하는 경우 Message Queue에서 고유한 식별자를 자동으로 할당하게 하는 편이 더 좋습니다. 그러기 위해서는 연결 팩토리의 imqConfiguredClientID 속성을 다음 형식의 값으로 설정하면 됩니다.

${u}factoryID

${u} 문자는 속성 값의 처음 네 문자여야 합니다. 중괄호 안에 u 이외의 문자를 지정할 경우 연결 생성 시 예외가 발생하게 됩니다. 이러한 문자가 다른 위치에서 사용되는 경우에는 특별한 의미 없이 일반 텍스트로 간주됩니다. factoryID의 값은 연결 팩토리 객체와 관련된 고유 문자열입니다.

특정 클라이언트에 대한 연결을 생성하는 경우 Message Queue는 ${u} 문자를 u:userName으로 바꾸어 클라이언트 식별자를 구성합니다. 여기서 userName은 연결 인증에 사용되는 사용자 이름입니다. 따라서 해당 연결 팩토리가 생성한 연결은 다른 모든 측면에서는 동일하더라도 각 연결마다 고유한 클라이언트 식별자를 갖게 됩니다. 예를 들어, 사용자 이름이 Calvin이고 연결 팩토리의 imqConfiguredClientID 속성에 대해 지정된 문자열이 ${u}Hobbes이면 지정된 클라이언트 식별자는 u:CalvinHobbes가 됩니다.


주 –

두 클라이언트가 모두 기본 사용자 이름 guest를 사용하여 연결을 시도하는 경우에는 각 클라이언트마다 동일한 ${u} 구성 요소를 가진 클라이언트 식별자를 갖게 되므로 이 방법이 적용되지 않습니다. 이 경우, 연결을 요청한 첫 번째 클라이언트만 연결됩니다. Message Queue에서 클라이언트 식별자가 동일한 두 개의 연결을 생성할 수는 없으므로 두 번째 클라이언트의 연결 시도는 실패하게 됩니다.


imqConfiguredClientID를 사용하여 클라이언트 식별자를 지정한 경우에도 클라이언트 응용 프로그램은 setClientID 연결 메소드를 사용하여 이 설정을 무시할 수 있습니다. 연결 팩토리의 imqDisableSetClientID 속성을 true로 설정하면 이 작업을 막을 수 있습니다. 영구 가입자를 사용하는 응용 프로그램의 경우에는 imqConfiguredClientID를 사용한 관리 방식이나 setClientID를 사용한 프로그램 방식으로 클라이언트 식별자를 설정해야 합니다.