구성 관리자 프록시 Subscription API

이 작업은 구성 관리자 프록시(CMP) 응용프로그램을 개발하는 더 큰 작업의 일부분으로 CMP 고급 기능 중 하나입니다.

CMP를 사용하여 도메인에서 활성 Subscription 세트를 표시 및 삭제할 수 있습니다. 다음 예에는 이름이 문자열 "shares"로 시작하는 토픽의 모든 Subscription 관련 정보가 제공됩니다.
import java.util.Enumeration;
import com.ibm.broker.config.proxy.*;

public class QuerySubscriptions {

  public static void main(String[] args) {

    ConfigManagerProxy cmp = null;
    try {
      ConfigManagerConnectionParameters cmcp =
         new MQConfigManagerConnectionParameters(
           "localhost",
           1414,
           "");
      cmp = ConfigManagerProxy.getInstance(cmcp);   
    } catch (ConfigManagerProxyException cmpex) {
      System.out.println("Error connecting: "+cmpex);
    }
        
    if (cmp != null) {
      System.out.println("Connected to Config Manager!");
      querySubscriptionsByTopic(cmp, "shares%");
      cmp.disconnect();
    }
  }

  private static void querySubscriptionsByTopic(
    ConfigManagerProxy cmp,
    String topic)
  {
    try {
      SubscriptionsProxy matchingSubscriptions =
        cmp.getSubscriptions(topic, // filter by topic
                             null, // don't filter by broker
                             null, // don't filter by username
                             null, // don't filter by sub point
                             null, // no start date,
                             null); // no end date
            
      Enumeration e = matchingSubscriptions.elements();
      int matches = matchingSubscriptions.getSize();
      System.out.println("Found "+matches+" matches:");

      while (e.hasMoreElements()) {
        Subscription thisSub = (Subscription)e.nextElement();
        System.out.println("-----");
        System.out.println("Broker="+thisSub.getBroker());
        System.out.println("Topic="+thisSub.getTopicName());
        System.out.println("Client="+thisSub.getClient());
        System.out.println("Filter="+thisSub.getFilter());
        System.out.println("Reg date="
          +thisSub.getRegistrationDate());
        System.out.println("User="+thisSub.getUser());
        System.out.println("Sub point="
          +thisSub.getSubscriptionPoint());
      }
    } catch (ConfigManagerProxyException e) {
         e.printStackTrace();
    }
  }
}

활성 Subscription 세트를 조회하는 메소드가 ConfigManagerProxy.getSubscriptions()인데, Subscription을 필터링하는 데 사용하는 조회를 정의합니다. 토픽, 브로커, 사용자 ID 및 subscriptionPoint 매개변수는 와일드카드 문자를 표시하는 % 문자가 포함될 수 있는 문자열입니다.

startDateendDate 매개변수는 유형이 GregorianCalendar인데, 일치 Subscription의 등록 시간을 제한하는 데 사용할 수 있습니다. 이 메소드의 모든 매개변수에서는 널값 또는 문자열 인수의 경우 빈 값이 "이 속성에 따라 필터링되지 않음"을 의미합니다.

앞의 예에서 이 메소드로 제공되는 유일한 비널 매개변수가 topic 문자열 shares%인데, CMP가 토픽 이름이 "shares"로 시작되는 모든 Subscription을 리턴합니다.

조회 결과를 표시하는 SubscriptionsProxy의 인스턴스가 이 메소드에서 리턴됩니다. 이 클래스가 AdministeredObject로부터 상속될 경우, 이 오브젝트의 속성이 구성 관리자에서 비동기 형태로 제공되어 CMP가 정보 도착을 대기하는 동안 속성을 조회하는 메소드가 임시 차단될 수 있습니다.

조회에서 개별 일치를 표시하는 Subscription 오브젝트가 편의를 위해 SubscriptionsProxy에 사용되는 작은 데이터 구조이므로 예외가 차단 또는 전달된다는 점에 유의하십시오.

AdministeredObject 유형임에도 불구하고 SubscriptionsProxy 오브젝트에서는 AdministeredObjectListeners가 등록될 수 없습니다. 이는 구성 관리자에서 조회 결과가 일단 리턴되면 조회를 재전송하지 않는 한 일치 Subscription 세트 변경을 알 수 없다는 것을 의미합니다. 이 작동의 결과로 원래 조회 시에만 올바른 Subscription 조회 결과가 나타납니다.

SubscriptionsProxy.deleteSubscriptions() 메소드를 사용하여 Subscription을 삭제할 수 있습니다. SubscriptionsProxy 오브젝트가 AdministeredObjectListeners를 가질 수 없기 때문에 해당 조치 결과가 ConfigManagerProxy 오브젝트의 리스너에 공개됩니다.

관련 태스크
구성 관리자 프록시 응용프로그램 개발 및 실행을 위한 환경 구성
구성 관리자 프록시의 고급 기능
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ae33120_