Ejemplo: Publicación de un mensaje WS-Notification

Utilice esta tarea para escribir el código que necesita una aplicación de cliente de editor que puede publicar un mensaje de notificación en un intermediario, en función del fragmento de 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: El artículo Escritura de aplicaciones JAX-WS para WS-Notification también incluye un ejemplo de un aplicación de cliente de editor JAX-WS.

Para escribir el código para una aplicación de cliente de editor que puede publicar un mensaje de notificación en un intermediario, realice los pasos siguientes, haciendo referencia al fragmento 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 el contenido del mensaje para un mensaje de notificación.
  4. Cree un mensaje de notificación a partir del contenido.
  5. Añada una expresión de tema al mensaje de notificación. La expresión de tema debe indicar a qué tema o temas corresponde el mensaje.
  6. Cree cualquier información opcional.
  7. Opcional: Si el intermediario requiere que se registren las aplicaciones cliente de publicación, asocie la solicitud con un registro de aplicación de publicación determinado. El registrationEPR es la ConsumerReference EndpointReference devuelta por el intermediario en relación con una invocación de la operación RegisterPublisher.
  8. Invoque la operación de notificación mediante la llamada al método asociado en el archivo de apéndice (stub)

Ejemplo

El código de ejemplo siguiente representa una aplicación cliente de editor que puede publicar un mensaje de notificación en 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 el contenido del mensaje para un mensaje de notificación
SOAPElement messageContents = null;
javax.xml.soap.SOAPFactory soapFactory = javax.xml.soap.SOAPFactory.newInstance();
if (soapFactory instanceof IBMSOAPFactory) {
    // Puede utilizar los métodos de añadir valor proporcionados por la API IBMSOAPFactory para crear el SOAPElement
    // de una serie XML.
    String messageContentsXML = "<xyz:MyData xmlns:xyz=\"uri:mynamespace\">Some data</xyz:MyData>";        
    messageContents = ((IBMSOAPFactory) soapFactory).createElementFromXMLString(messageContentsXML);
} else {
    // Genere el SOAPElement utilizando las API javax.xml.soap estándar
    messageContents = soapFactory.createElement("MyData", "xyz", "uri:mynamespace");
    messageContents.addTextNode("Some data");
}

// Cree un mensaje de notificación a partir de los contenidos
NotificationMessage message = new NotificationMessage(messageContents);               

// Añada una expresión de tema al mensaje de notificación que indique qué temas
// se corresponden con el mensaje
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:example");
TopicExpression exp = 
    new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:ExampleTopic", prefixMappings);        
message.setTopic(exp);

// Cree cualquier información opcional
SOAPElement[] optionalInformation = new SOAPElement[] {};
        
/*
Opcional
--------
La línea siguiente causará la solicitud para que se asocie con un registro de editor determinado.
Debe hacerlo si el intermediario requiere que se registren los editores. El registrationEPR es la
ConsumerReference EndpointReference devuelta por el intermediario en relación con una invocación de 
la operación RegisterPublisher.
        
    ((Stub) stub)._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, consumerReferenceEPR);
*/

// Invoque la operación de notificación mediante la llamada al método asociado en el archivo de apéndice (stub)
stub.notify(new NotificationMessage[] { message }, optionalInformation);

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
File name: tjwsn_ex_pub.html