Die API für Konfigurationsmanager-Proxy-Subskriptionen

Sie können aktive Subskriptionen anzeigen und mit diesen arbeiten.

Diese Task ist ein Teil der übergeordneten Task des Entwickelns von Konfigurationsmanager-Proxy-Anwendungen, und zwar handelt es sich hier um eine der erweiterten Funktionen des CMPs.

Mit Hilfe des CMPs können Sie eine Gruppe von aktiven Subskriptionen in der Domäne anzeigen und löschen. Im folgenden Beispiel werden Informationen zu allen Subskriptionen für Themen, deren Namen mit der Zeichenfolge "shares" beginnen, angezeigt.

import java.util.Enumeration;
import com.ibm.broker.config.proxy.*;

public class QuerySubscriptions {

  public static void main(String[] args) {

    ConfigManagerProxy cmp = null;
    BrokerProxy bp = null;
    TopologyProxy tp = null;
    try {
      ConfigManagerConnectionParameters cmcp =
         new MQConfigManagerConnectionParameters(
           "localhost",
           1414,
           "");
      cmp = ConfigManagerProxy.getInstance(cmcp);
      tp = cmp.getTopology();
      bp = tp.getBrokerByName("BROKER_A");   
    } 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 {
      SubscriptionQuery sq = bp.createSubscriptionQuery();
      sq.setString(SubscriptionParameters.TOPIC, topic); // set the topic
      SubscriptionsProxy matchingSubscriptions = sq.executeQuery();
        
            
      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();
    }
  }
}

Die Klasse zum Abfragen der Gruppe der aktiven Subskriptionen lautet SubscriptionsQuery(). Diese Methode definiert die Abfrage, die zum Filtern der Subskriptionen verwendet wird. Die von Ihnen in SubscriptionsParameters und SubscriptionsParameters.MQ definierten Parameter können in einer Instanz der Klasse festgelegt werden, um eine Abfrage zu erstellen. Sie können das Zeichen % einschließen, um Platzhalterzeichen in den Parametern des Typs 'Zeichenfolge' anzugeben.

Bei den Parametern SubscriptionsParameters.STARTDATE und SubscriptionsParameters.ENDDATE handelt es sich um Parameter des Typs 'GregorianCalendar'. Mit diesen Parametern können Sie die Registrierungszeit der entsprechenden Subskriptionen einschränken.

Im vorhergehenden Beispiel wird nur der Parameter topic des Typs 'Zeichenfolge' als shares% festgelegt. Mit dieser Einstellung wird der CMP dazu aufgefordert, alle Subskriptionen zurückzugeben, deren Themenname mit "shares" beginnt.

Die Abfrage wird ausgegeben, wenn Sie die MethodeSubscriptionQuery.executeQuery() aufrufen. Sie liefert eine Instanz von 'SubscriptionsProxy', die die Ergebnisse der Abfrage enthält. Wegen der Vererbung von 'AdministeredObject' an diese Klasse werden die Attribute dieses Objekts vom Konfigurationsmanager asynchron bereitgestellt. Deshalb kann es sein, dass die Methoden zur Abfrage der SubscriptionsProxy-Attribute vorübergehend blockiert werden, während der CMP auf die Informationen wartet.

Die Klasse 'Subscription' und ihre Unterklasse 'MQSubscription', die für einen einzelnen Treffer der Abfrage steht, ist eine kleine Datenstruktur, die der Einfachheit halber vom SubscriptionsProxy-Objekt verwendet wird und als solche weder blockieren noch Ausnahmebedingungen ausgeben kann.

Obwohl die SubscriptionsProxy-Objekte den Typ 'AdministeredObject' haben, können Sie keine AdministeredObjectListeners dafür registrieren. Wenn also die Abfrageergebnisse vom Konfigurationsmanager zurückgegeben werden, werden Sie nicht darüber benachrichtigt, ob es Änderungen in der Gruppe der den Kriterien entsprechenden Subskriptionen gibt, es sei denn, Sie übergeben die Abfrage erneut. Die Konsequenz dieses Verhaltens ist, dass die Ergebnisse von Subskriptionsabfragen nur zum Zeitpunkt der ursprünglichen Abfrage garantiert korrekt sind.

Subskriptionen können unter Verwendung der Methode SubscriptionsProxy.deleteSubscriptions() gelöscht werden. Da SubscriptionsProxy-Objekten keine Empfangsprogramme für verwaltete Objekte zugeordnet werden können, wird das Ergebnis einer solchen Aktion für die Empfangsprogramme des ConfigManagerProxy-Objekts veröffentlicht.

Zugehörige Tasks
Umgebung für das Entwickeln und Ausführen von Konfigurationsmanager-Proxy-Anwendungen konfigurieren
Erweiterte Funktionen des Konfigurationsmanager-Proxys
Zugehörige Informationen
API des Konfigurationsmanager-Proxys
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:12

ae33120_