Exemple : publication d'un message WS-Notification

Utilisez cette tâche pour écrire le code requis par une application client de diffuseur de publications permettant de publier un message de notification à un courtier, sur la base du code fourni à titre d'exemple.

Pourquoi et quand exécuter cette tâche

Cet exemple repose sur l'utilisation des API JAX-RPC (Java™ API for XML-based remote procedure calls) avec le code généré en utilisant l'outil WSDL2Java (exécuté sur le WSDL Notification Broker généré par la création du point de service WS-Notification) et les API et SPI WebSphere Application Server.

Dans WebSphere Application Server, il existe deux implémentations du service WS-Notification : celle de la version 6.1 et celle de la version 7.0. Cet exemple JAX-RPC peut interagir avec les points de service WS-Notification version 6.1 ou 7.0. Toutefois, si vous souhaitez utiliser WS-Notification avec des ensembles de règles, par exemple pour permettre la composition avec WS-ReliableMessaging, vos applications WS-Notification doivent être chiffrées afin d'utiliser le modèle de programmation JAX-WS (API Java pour les services Web basés sur XML) et doivent interagir avec les points de service WS-Notification version 7.0. Si vous débutez dans la programmation d'applications client JAX-WS, consultez les rubriques suivantes : L'article Ecriture d'applications JAX-WS pour WS-Notification contient un exemple d'une application client de diffuseur de publications JAX-WS.

Pour écrire le code requis par une application client de diffuseur de publications permettant de publier un message de notification à un courtier, exécutez les étapes ci-après en vous reportant au code fourni à titre d'exemple pour plus d'informations.

Procédure

  1. Recherchez le service JAX-RPC. Le nom JNDI est spécifique de l'implémentation du client des services Web.
  2. Obtenez un module de remplacement pour le port sur lequel vous souhaitez appeler des opérations.
  3. Créez le contenu de message pour un message de notification.
  4. Créez un message de notification à partir du contenu.
  5. Ajoutez une expression de rubrique au message de notification. L'expression de rubrique doit indiquer la ou les rubriques auxquelles le message correspond.
  6. Créez des informations facultatives.
  7. Facultatif : Si le courtier nécessite l'enregistrement d'applications client de diffuseur de publications, associez la demande à un enregistrement de diffuseur de publications spécifique. L'élément registrationEPR est la référence de noeud final ConsumerReference renvoyée par le courtier suite à un appel de l'opération RegisterPublisher.
  8. Appelez l'opération de notification en appelant la méthode associée sur le module de remplacement.

Exemple

L'exemple suivant décrit une application client de diffuseur de publications qui permet de publier un message de notification à un courtier :

// Look up the JAX-RPC service. The JNDI name is specific to your web services client implementation
InitialContext context = new InitialContext();
javax.xml.rpc.Service service = (javax.xml.rpc.Service) context.lookup(
    "java:comp/env/services/NotificationBroker");

// Get a stub for the port on which you want to invoke operations
NotificationBroker stub = (NotificationBroker) service.getPort(NotificationBroker.class);

// Create the message contents for a notification message
SOAPElement messageContents = null;
javax.xml.soap.SOAPFactory soapFactory = javax.xml.soap.SOAPFactory.newInstance();
if (soapFactory instanceof IBMSOAPFactory) {
    // You can use the value add methods provided by the IBMSOAPFactory API to create the SOAPElement
    // from an XML string.
    String messageContentsXML = "<xyz:MyData xmlns:xyz=\"uri:mynamespace\">Some data</xyz:MyData>";        
    messageContents = ((IBMSOAPFactory) soapFactory).createElementFromXMLString(messageContentsXML);
} else {
    // Build up the SOAPElement using the standard javax.xml.soap APIs
    messageContents = soapFactory.createElement("MyData", "xyz", "uri:mynamespace");
    messageContents.addTextNode("Some data");
}

// Create a notification message from the contents
NotificationMessage message = new NotificationMessage(messageContents);               

// Add a topic expression to the notification message indicating to which topic or topics the
// message corresponds
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:example");
TopicExpression exp = 
    new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:ExampleTopic", prefixMappings);        
message.setTopic(exp);

// Create any optional information
SOAPElement[] optionalInformation =  new SOAPElement[] {};
        
/*
Optional
--------
The following line will cause the request to be associated with a particular publisher registration.
You must do this if the broker requires publishers to register. The registrationEPR is the
ConsumerReference EndpointReference returned by the broker in relation to an invocation of the 
RegisterPublisher operation.
        
    ((Stub) stub)._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, consumerReferenceEPR);
*/

// Invoke the Notify operation by calling the associated method on the stub
stub.notify(new NotificationMessage[] { message }, optionalInformation);

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_ex_pub
Nom du fichier : tjwsn_ex_pub.html