Exemple : inscription d'un diffuseur de publications WS-Notification

Utilisez cette tâche pour écrire le code requis par une application client de diffuseur de publications permettant d'inscrire une application client avec 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 :

Pour écrire le code requis par une application client de diffuseur de publications permettant d'inscrire une application client avec 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 une référence pour le diffuseur de publications en cours d'inscription. Contient l'adresse du service Web du fournisseur.
  4. Créez une liste (tableau) d'expressions de sujet pour décrire les sujets sur lesquels le fournisseur publie des messages.
  5. Indique que vous ne souhaitez pas que le diffuseur de publications utilise la publication à la demande.
  6. Définissez une valeur pour l'heure de fin initiale de l'enregistrement. Par exemple, vous pouvez définir une valeur correspondant à 1 année.
  7. Créez des réservations destinées à contenir les valeurs renvoyées par le courtier :
    • PublisherRegistrationReference définit la référence de noeud final à utiliser lors de la gestion de la vie de l'enregistrement.
    • ConsumerReference définit la référence de noeud final à utiliser lors des futures publications de messages.
  8. Appelez l'opération RegisterPublisher en appelant la méthode associée sur le module de remplacement.
  9. Récupérez l'élément PublisherRegistrationReference.
  10. Récupérez l'élément ConsumerReference.

Exemple

L'exemple de code suivant décrit un client JAX-RPC dans le rôle de l'inscription du diffuseur de publications, inscrivant l'application d'inscription d'un diffuseur de publications (fournisseur) avec 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 a reference for the publisher (producer) being registered. This contains the address of the
// producer web service.
EndpointReference publisherEPR = 
    EndpointReferenceManager.createEndpointReference(new URI("http://myserver.mysom.com:9080/Producer"));

// Create a list (array) of topic expressions to describe the topics to which the producer publishes
// messages. For this example you add one topic
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};

// Indicate that you do not want the publisher to use demand based publishing
Boolean demand = Boolean.FALSE;

// Set a value for the initial termination time of the registration. For example, set a value 1 year in
// the future
Calendar initialTerminationTime = Calendar.getInstance();
initialTerminationTime.add(Calendar.YEAR, 1);

// Create holders to hold the multiple values returned from the broker:
// PublisherRegistrationReference: An endpoint reference for use in lifetime management of
// the registration
EndpointReferenceTypeHolder pubRegMgrEPR = new EndpointReferenceTypeHolder();

// ConsumerReference: An endpoint reference for use in subsequent publishing of messages
EndpointReferenceTypeHolder consEPR = new EndpointReferenceTypeHolder();

// Invoke the RegisterPublisher operation by calling the associated method on the stub
stub.registerPublisher(publisherEPR, topics, demand, initialTerminationTime, null, pubRegMgrEPR, consEPR);

// Retrieve the PublisherRegistrationReference
EndpointReference registrationEPR = pubRegMgrEPR.value;

// Retrieve the ConsumerReference
EndpointReference consumerReferenceEPR = consEPR.value;

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_reg
Nom du fichier : tjwsn_ex_pub_reg.html