Ejemplo: Registro de un editor WS-Notification

Utilice esta tarea para escribir el código para una aplicación de cliente de suscriptor que puede suscribirse a una aplicación consumidora con un intermediario, según el extracto del código de ejemplo proporcionado.

Acerca de esta tarea

Este ejemplo se basa en el uso de las API Java™ para las API de llamadas de procedimiento remoto basadas en XML (JAX-RPC) con el código generado mediante la herramienta WSDL2Java (se ejecuta en el WSDL del intermediario de notificaciones generado como resultado de crear el punto de servicio de WS-Notification) y las API y SPI de WebSphere Application Server.

En WebSphere Application Server hay dos implementaciones del servicio WS-Notification: la Versión 6.1 y la Versión 7.0. Este ejemplo de JAX-RPC puede interactuar satisfactoriamente con los puntos de servicio WS-Notification Versión 6.1 o Versión 7.0. Sin embargo, si desea utilizar WS-Notification con conjuntos de políticas, por ejemplo para habilitar la integración con WS-ReliableMessaging, las aplicaciones WS-Notification deben codificarse para utilizar el modelo de programación JAX-WS (API de Java para servicios web XML) y deben interactuar con los puntos de servicio WS-Notification Versión 7.0. Si no está familiarizado con la programación de aplicaciones cliente JAX-WS, consulte los temas siguientes:

Para escribir el código para una aplicación de cliente de suscriptor que puede suscribirse a una aplicación consumidora con un intermediario, lleve a cabo los pasos siguientes, haciendo referencia a la extracción de código de ejemplo para obtener más información.

Procedimiento

  1. Busque el servicio JAX-RPC. El nombre JNDI es específico a su implementación de cliente de servicios web.
  2. Obtenga un archivo de apéndice (stub) para el puerto en el que desea invocar las operaciones
  3. Cree una referencia para el editor (generador) que se está registrando. Esta referencia contiene la dirección del servicio web del productor.
  4. Cree una lista (matriz) de expresiones de tema para describir los temas de los cuales el productor publica mensajes.
  5. Indique que no desea que el editor utilice la publicación basada en demanda.
  6. Establezca un valor para la fecha de finalización inicial del registro. Por ejemplo, puede establecer un valor de 1 año en el futuro.
  7. Cree contenedores para albergar los varios valores devueltos del intermediario:
    • PublisherRegistrationReference define la referencia de punto final que se utilizará en la gestión del ciclo de vida del registro.
    • ConsumerReference define la referencia del punto final que se utilizará en siguientes publicaciones de mensajes.
  8. Invoque la operación RegisterPublisher mediante la llamada al método asociado en el archivo de apéndice (stub).
  9. Recupere la PublisherRegistrationReference.
  10. Recupere la ConsumerReference.

Ejemplo

El siguiente código de ejemplo representa un cliente JAX-RPC que actúa en el rol de registro del editor y registra una aplicación de editor (generador) con un intermediario.

// Busque el servicio JAX-RPC. El nombre JNDI es específico a su
implementación de cliente de servicios web
InitialContext context = new InitialContext();
javax.xml.rpc.Service service = (javax.xml.rpc.Service) context.lookup(
    "java:comp/env/services/NotificationBroker");

// Obtenga un archivo de apéndice  (stub) para el puerto en el que desea invocar las operaciones
NotificationBroker stub = (NotificationBroker) service.getPort(NotificationBroker.class);

// Cree una referencia para el editor (generador) que se está registrando. Ésta contiene la dirección del
// servicio web del generador.
EndpointReference publisherEPR = 
    EndpointReferenceManager.createEndpointReference(new URI("http://myserver.mysom.com:9080/Producer"));

// Cree una lista (matriz) de expresiones de tema para describir los temas a los cuales el generador publica
// mensajes. Para este ejemplo, añada un tema
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:mytopicns");
TopicExpression topic = 
    new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:xyz", prefixMappings);                
TopicExpression[] topics = new TopicExpression[] {topic};

// Indique que no desea que el editor utilice la publicación basada en demanda
Boolean demand = Boolean.FALSE;

// Establezca un valor para la fecha de finalización inicial del registro. Por
// ejemplo, establezca un valor de 1 año en
el futuro
Calendar initialTerminationTime = Calendar.getInstance();
initialTerminationTime.add(Calendar.YEAR, 1);

// Cree mantenimientos para conservar los valores múltiples devueltos del intermediario:
// PublisherRegistrationReference: Una referencia de punto final para su uso en la gestión
// del tiempo de existencia del registro
EndpointReferenceTypeHolder pubRegMgrEPR = new EndpointReferenceTypeHolder();

// ConsumerReference: Una referencia del punto final para utilizar en siguientes publicaciones de mensajes
EndpointReferenceTypeHolder consEPR = new EndpointReferenceTypeHolder();

// Invoque la operación RegisterPublisher mediante la llamada al método asociado en el archivo de apéndice (stub)
stub.registerPublisher(publisherEPR, topics, demand, initialTerminationTime, null, pubRegMgrEPR, consEPR);

// Recupere la PublisherRegistrationReference
EndpointReference registrationEPR = pubRegMgrEPR.value;

// Recupere la ConsumerReference
EndpointReference consumerReferenceEPR = consEPR.value;

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_ex_pub_reg
File name: tjwsn_ex_pub_reg.html