API di sottoscrizione di Proxy di Gestione configurazione

Questa sezione fa parte dell'attività più ampia di sviluppo delle applicazioni CMP (Configuration Manager Proxy/Proxy di Gestione configurazione) ed illustra una delle funzioni avanzate di CMP.

E' possibile utilizzare CMP per visualizzare ed eliminare l'insieme di sottoscrizioni attive nel dominio. L'esempio riportato di seguito fornisce informazioni relative a tutte le sottoscrizioni ad argomenti che iniziano con la stringa "shares".
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();
    }
  }
}

Il metodo che interroga l'insieme di sottoscrizioni attive è ConfigManagerProxy.getSubscriptions(), che definisce la query utilizzata per filtrare le sottoscrizioni. L'argomento, il broker, l'ID utente ed i parametri subscriptionPoint sono stringhe che possono includere il carattere % per indicare i caratteri globali.

I parametri startDate e endDate sono di tipo GregorianCalendar e possono essere utilizzati per limitare l'ora di registrazione delle sottoscrizioni corrispondenti. Per tutti i parametri di questo metodo, un valore null o, nel caso degli argomenti stringa, un valore vuoto indica "non filtrare per questo attributo".

Nell'esempio precedente, l'unico parametro non null fornito a questo metodo è la stringa topic shares%, che indica a CMP di restituire tutte le sottoscrizioni il cui nome dell'argomento inizia con "shares".

Da questo metodo viene restituita un'istanza di SubscriptionsProxy che rappresenta i risultati della query. Poiché questa classe eredita da AdministeredObject, gli attributi di questo oggetto vengono forniti in modo asincrono da Gestione configurazione e quindi i metodi che interrogano i relativi attributi possono bloccarsi temporaneamente mentre CMP attende l'arrivo delle informazioni.

Notare che l'oggetto Subscription, che rappresenta una singola corrispondenza dalla query, è una piccola struttura di dati utilizzata da SubscriptionsProxy e non blocca o genera eccezioni.

Malgrado siano di tipo AdministeredObject, gli oggetti SubscriptionsProxy non possono avere AdministeredObjectListeners registrati su di essi. Ciò significa che una volta che i risultati di una query vengono restituiti da Gestione configurazione, viene ricevuta una notifica se l'insieme di sottoscrizioni corrispondenti viene modificato, a meno che non venga inoltrata nuovamente la query. La conseguenza è che i risultati delle query delle sottoscrizioni sono garantiti come corretti solo nel momento in cui viene effettuata la query originale.

E' possibile eliminare le sottoscrizioni utilizzando il metodo SubscriptionsProxy.deleteSubscriptions(). Poiché gli oggetti SubscriptionsProxy non possono avere AdministeredObjectListeners, il risultato di questa azione vengono pubblicati ai listener dell'oggetto ConfigManagerProxy.

Attività correlate
Configurazione di un ambiente per lo sviluppo e l'esecuzione di applicazioni Proxy di Gestione configurazione
Funzioni avanzate di Proxy di Gestione configurazione
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ae33120_