Las API de suscripciones del Proxy del Gestor de configuración

Esto forma parte de la tarea global para el desarrollo de las aplicaciones del Proxy del Gestor de configuración (CMP) y es una de las características avanzadas de CMP.

Puede utilizar el CMP para mostrar y suprimir el conjunto de suscripciones activas del dominio. El siguiente ejemplo proporciona información sobre todas las suscripciones a temas cuyos nombres empiecen por la serie de caracteres "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();
    }
  }
}

El método que consulta el conjunto de suscripciones activas es ConfigManagerProxy.getSubscriptions(), que define la consulta utilizada para filtrar las suscripciones. Los parámetros de tema, intermediario, ID de usuario y punto de suscripción son series de caracteres que pueden incluir el carácter % para indicar caracteres comodín.

Los parámetros startDate y endDate son de tipo Calendario Gregoriano, que puede usarse para limitar la hora de registro de las suscripciones coincidentes. Para todos los parámetros de este método, un valor nulo o, en el caso de los argumentos de serie de caracteres, un valor vacío, significa "no filtrar mediante este atributo".

En el ejemplo anterior, el único parámetro no-nulo que se suministra para este método es la serie de caracteres topic serie de caracteres shares%, que indica al CMP que devuelva todas las suscripciones cuyos nombres de tema empiecen por "shares".

Desde este método se devuelve una instancia de SubscriptionsProxy que representa el resultado de la consulta. Como esta clase procede de AdministeredObject, los atributos de este objeto se suministran de forma asíncrono desde el Gestor de configuración y, por lo tanto, los métodos que preguntan sus atributos pueden bloquearse temporalmente mientras el CMP espera la llegada de la información.

Tenga en cuenta que el objeto Subscription, que representa una coincidencia individual procedente de la consulta, es una pequeña estructura de datos utilizada por comodidad por SubscriptionsProxy y que, como tal, no bloquea ni genera excepciones.

A pesar de ser del tipo AdministeredObject, los objetos SubscriptionsProxy no pueden tener AdministeredObjectListeners registrados para los mismos. Esto significa que una vez que los resultados de una consulta se devuelven desde el Gestor de configuración, no se le notificarán los cambios en el conjunto de suscripciones coincidentes, a menos que vuelva a someter la consulta. La consecuencia de este comportamiento es que sólo se garantiza la corrección de los resultados de consultas de suscripciones efectuadas en el momento en que se realizó la consulta original.

Es posible suprimir las suscripciones utilizando el método SubscriptionsProxy.deleteSubscriptions(). Como los objetos SubscriptionsProxy no pueden tener AdministeredObjectListeners, el resultado de una acción de este tipo se publica para los escuchas del objeto ConfigManagerProxy.

Tareas relacionadas
Configuración de un entorno para el desarrollo y ejecución de aplicaciones del Proxy del Gestor de configuración
Características avanzadas del Proxy del Gestor de configuración
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ae33120_