Sun Java System Message Queue 4.1 릴리스 노트

JMX 지원

JMX(Java Management Extensions) 사양에 따라 Message Queue 브로커 구성 및 모니터링을 위한 새로운 API가 추가되었습니다. 이 API를 사용하여 Message Queue 클라이언트 응용 프로그램 내에서 브로커 기능을 프로그래밍 방식으로 구성하고 모니터링할 수 있습니다. 이전 버전의 Message Queue에서는 명령줄이나 관리 콘솔을 통해서만 이 기능에 액세스할 수 있었습니다.

API는 다음 Message Queue 관련 자원을 관리하기 위한 JMX Managed Beans(MBeans) 집합으로 구성됩니다.

이 MBean은 상태 변경 사항이 발생할 때 클라이언트 응용 프로그램이 이 변경 사항을 수신하고 이에 대해 비동기식으로 응답할 수 있도록 해주는 알림뿐 아니라 기본 자원의 상태를 동기식으로 폴링하고 조작하는 데 필요한 속성작업을 제공합니다. 클라이언트 응용 프로그램은 JMX API를 사용하여 다음과 같은 구성 및 모니터링 작업을 수행할 수 있습니다.

JMX API에 대한 소개와 전체 참조 정보에 대해서는 Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients를 참조하십시오.

브로커 지원: JMX 관련 등록 정보

JMX API를 지원하기 위한 몇 개의 새로운 브로커 등록 정보가 추가되었습니다(표 1–3 참조). 이 등록 정보는 명령줄에서 Message Queue 명령 유틸리티(imqcmd)를 사용하여 설정할 수 없습니다. 대신, 브로커 유틸리티(imqbrokerd)의 -D 옵션을 사용하여 설정하거나 브로커의 인스턴스 구성 파일(config.properties)에서 직접 편집할 수 있습니다. 또한 이러한 등록 정보의 일부(imq.jmx.rmiregistry.start, imq.jmx.rmiregistry.use, imq.jmx.rmiregistry.port)는 표 1–4에서 설명하는 새로운 브로커 유틸리티 옵션을 사용하여 설정할 수 있습니다. 다음 표에서는 각 옵션을 나열하고 해당 유형 및 용도를 지정 및 설명합니다.

표 1–3 JMX 지원을 위한 새 브로커 등록 정보

등록 정보 

유형 

설명 

imq.jmx.rmiregistry.start

Boolean

브로커 시작 시 RMI 레지스트리를 시작할지 여부를 지정합니다.

true로 설정하면 브로커가 imq.jmx.rmiregistry.port에 지정한 포트에서 RMI 레지스트리를 시작하며 이를 사용하여 JMX 커넥터에 RMI 스텁을 저장합니다. 이 경우 imq.jmx.rmiregistry.use 값은 무시됩니다.

기본값: false

imq.jmx.rmiregistry.use

Boolean

외부 RMI 레지스트리를 사용할지 여부를 지정합니다.

이 값은 imq.jmx.rmiregistry.startfalse일 경우에만 적용됩니다.

true로 설정하면 브로커가 imq.jmx.rmiregistry.port에 지정한 포트에서 외부 RMI 레지스트리를 사용하여 JMX 커넥터에 RMI 스텁을 저장합니다. 브로커 시작 시 외부 RMI 레지스트리가 이미 실행 중이어야 합니다.

기본값: false

imq.jmx.rmiregistry.port

Integer

RMI 레지스트리의 포트 번호입니다.

이 값은 imq.jmx.rmiregistry.start 또는 imq.jmx.rmiregistry.usetrue인 경우에만 적용됩니다. 이렇게 위의 값이 true로 설정되면 이 포트 번호를 JMX 서비스 URL의 URL 경로에 포함시켜 RMI 레지스트리를 사용할 수 있도록 JMX 커넥터를 구성할 수 있습니다.

기본값: 1099

imq.jmx.connector.list

String

사전 구성된 JMX 커넥터 이름입니다(쉼표로 구분).

기본값: jmxrmi,ssljmxrmi

imq.jmx.connector.activelist

String

브로커 시작 시 활성화할 JMX 커넥터 이름입니다(쉼표로 구분).

기본값: jmxrmi

imq.jmx.connector.connectorName .urlpath

String

connectorName 커넥터에 대한 JMX 서비스 URL의 urlPath 구성 요소입니다.

JMX 서비스 URL 경로를 명시적으로 설정해야 할 경우(예: 공유된 외부 RMI 레지스트리를 사용하는 경우)에 유용합니다.

기본값: JMX 커넥터에 RMI 스텁을 저장하는 데 RMI 레지스트리를 사용하는 경우(즉, imq.jmx.registry.start 또는 imq.jmx.registry.usetrue인 경우)에는 다음과 같습니다.

   /jndi/rmi://brokerHost:rmiPort
      /brokerHost/brokerPort/connectorName

RMI 레지스트리를 사용하지 않는 경우(기본적으로 imq.jmx.registry.startimq.jmx.registry.use가 모두 false)에는 다음과 같습니다.

   /stub/rmiStub

여기서 rmiStub은 RMI 스텁의 인코딩되고 일련화된 표현입니다.

 

imq.jmx.connector.connectorName .useSSL

Boolean

connectorName 커넥터에 SSL(Secure Socket Layer)을 사용할지 여부를 지정합니다.

기본값: false

imq.jmx.connector.connectorName .brokerHostTrusted

Boolean

connectorName 커넥터에 대해 브로커에서 제공한 인증서를 신뢰할지 여부를 지정합니다.

이 값은 imq.jmx.connector.connectorName.useSSLtrue인 경우에만 적용됩니다.

이 값이 false인 경우에는 Message Queue 클라이언트 런타임이 제공되는 모든 인증서를 검증합니다. 인증서 서명자가 클라이언트의 트러스트 저장소에 없는 경우 검증이 실패합니다.

이 값이 true인 경우에는 인증서 검증이 생략됩니다. 이 설정은, 예를 들어 자체 서명된 인증서를 사용하는 소프트웨어를 테스트할 때 유용할 수 있습니다.

기본값: false

imq.jmx.connector.list 등록 정보는 브로커 시작 시 명명된 JMX 커넥터 집합을 만들도록 정의합니다. imq.jmx.connector.activelist는 만들어진 커넥터 집합에서 활성화할 커넥터를 지정합니다. 명명된 각 커넥터에는 다음과 같은 고유 등록 정보 집합이 있습니다.

imq.jmx.connector.connectorName .urlpath

imq.jmx.connector.connectorName .useSSL

imq.jmx.connector.connectorName .brokerHostTrusted

기본적으로 jmxrmissljmxrmi라고 하는 두 가지 JMX 커넥터가 만들어집니다. 첫 번째 커넥터는 SSL 암호화를 사용하지 않도록 구성되며(imq.jmx.connector.jmxrmi.useSSL = false), 두 번째 커넥터는 이 암호화를 사용하도록 구성됩니다(imq.jmx.connector.ssljmxrmi.useSSL = true). 기본적으로 브로커 시작 시 jmxrmi 커넥터만 활성화됩니다. 보안 통신을 위해 ssljmxrmi 커넥터를 활성화하는 방법에 대한 내용은 JMX 클라이언트에 대한 SSL 지원을 참조하십시오.

편의상 새 옵션(표 1–4)도 RMI 레지스트리에 대한 사용, 시작 및 포트를 제어하기 위해 명령줄 브로커 유틸리티(imqbrokerd)에 추가되었습니다. 이러한 옵션의 사용과 효과는 표 1–3에서 설명하는 것처럼 해당 브로커 등록 정보와 동일합니다. 다음 표에서는 각 옵션을 나열하고 해당 브로커 등록 정보 및 용도를 지정 및 설명합니다.

표 1–4 JMX 지원을 위한 새 브로커 유틸리티 옵션

옵션 

해당 브로커 등록 정보 

설명 

-startRmiRegistry

imq.jmx.rmiregistry.start

브로커 시작 시 RMI 레지스트리를 시작할지 여부를 지정합니다.

-useRmiRegistry

imq.jmx.rmiregistry.use

외부 RMI 레지스트리를 사용할지 여부를 지정합니다.

-rmiRegistryPort

imq.jmx.rmiregistry.port

RMI 레지스트리의 포트 번호입니다.

브로커 시작 시 작성 및 시작되는 JMX 커넥터의 JMX 서비스 URL을 나열하기 위한 새로운 하위 명령(표 1–5)이 명령줄 명령 유틸리티(imqcmd)에 추가되었습니다. 이 정보는 JMX 커넥터를 가져오는 데 Message Queue 편의 클래스 AdminConnectionFactory를 사용하지 않는 JMX 클라이언트에 필요하며, Java 모니터링 및 관리 콘솔(jconsole)과 같은 일반 JMX 브라우저를 통해 Message Queue를 관리하거나 모니터링하는 데 사용할 수도 있습니다.

표 1–5 새 명령 유틸리티 하위 명령

하위 명령 

설명 

list jmx

JMX 커넥터의 JMX 서비스 URL을 나열합니다.

JMX 클라이언트에 대한 SSL 지원

위에 언급한 바와 같이 Message Queue 메시지 브로커는 기본적으로 사전 구성된 JMX 커넥터 jmxrmi를 사용하므로 보안 통신이 설정되지 않은 상태로 구성됩니다. 응용 프로그램에 보안 통신을 위한 SSL(Secure Socket Layer)을 사용하려면 대신 사용할 수 있는 보안 JMX 커넥터 ssljmxrmi를 활성화해야 합니다. 이 커넥터를 활성화하려면 다음 단계를 수행해야 합니다.

  1. Message Queue 관리 설명서에 설명된 대로 ssljms, ssladmin 또는 cluster 연결 서비스와 동일한 방법으로 서명된 인증서를 가져오고 설치합니다.

  2. 필요 시 트러스트 저장소에 루트 인증 기관 인증서를 설치합니다.

  3. 브로커 시작 시 활성화될 수 있도록 다음과 같이 JMX 커넥터 목록에 ssljmxrmi 커넥터를 추가합니다.

    imq.jmx.connector.activelist=jmxrmi,ssljmxrmi

  4. Message Queue 브로커 유틸리티(imqbrokerd)에 비밀번호 파일의 키 저장소 비밀번호를 전달하거나 프롬프트 창의 명령줄에서 이 유틸리티를 입력하여 브로커를 시작합니다.

  5. 기본적으로 ssljmxrmi 커넥터(또는 다른 SSL 기반 커넥터)는 제공되는 모든 브로커 SSL 인증서를 검증하도록 구성됩니다. 이 검증을 수행하지 않으려면(예를 들어, 소프트웨어 테스트 중 자체 서명된 인증서를 사용할 경우) 브로커 등록 정보 imq.jmx.connector.ssljmxrmi.brokerHostTrustedtrue로 설정합니다.

클라이언트 측에서는 다음과 같이 ssljmxrmi를 기본 커넥터로 지정하는 URL로 관리자 연결 팩토리(AdminConnectionFactory)를 구성해야 합니다.

AdminConnectionFactory  acf = new AdminConnectionFactory();
acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");

필요 시 시스템 등록 정보 javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword를 사용하여 JMX 클라이언트가 트러스트 저장소를 가리키도록 설정합니다.