Exemple : Configuration d'une ressource à l'aide d'un programme pour le fournisseur de messagerie par défaut

Dans cet exemple, une connexion JMS à un bus d'intégration de services est créée à l'aide de l'API figurant dans le package com.ibm.websphere.sib. Ceci permet d'éviter d'utiliser JNDI pour rechercher les fabriques de connexions configurées de manière administrative. Une fois la connexion établie, l'exemple lit les lignes d'entrée à partir de la console et les envoie sous forme de messages texte JMS à la destination indiquée.

Cet exemple peut être exécuté en tant qu'application client léger ou en tant qu'application client autonome.
/* 
 * Programme exemple 
 * © COPYRIGHT International Business Machines Corp. 2009
 * All Rights Reserved * Licensed Materials - Property of IBM
 *
 * Ce programme exemple n'est soumis à aucune redevance ; il est fourni EN L'ETAT et peut être librement utilisé, exécuté,
 * copié et modifié par le client
 *
 * (a) dans le cadre de son instruction personnelle et de sujets d'étude,
 * (b) pour développer des applications conçues pour s'exécuter avec un produit IBM
 *     WebSphere pour utilisation interne du client.
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import com.ibm.websphere.sib.api.jms.JmsConnectionFactory;
import com.ibm.websphere.sib.api.jms.JmsFactoryFactory;
import com.ibm.websphere.sib.api.jms.JmsQueue;
import com.ibm.websphere.sib.api.jms.JmsTopic;

/**
 * Exemple de code pour créer à l'aide d'un programme une connexion à un bus et
 * envoyer un message texte.
 * 
 * Exemple de lignes de commande :
 *   SIBusSender topic://my/topic?topicSpace=Default.Topic.Space MyBus localhost:7276
 *   SIBusSender queue://myQueue MyBus localhost:7286:BootstrapSecureMessaging InboundSecureMessaging 
 */
public class SIBusSender {
  
  /**
   * @param args DEST_URL,BUS_NAME,PROVIDER_ENDPOINTS,[TRANSPORT_CHAIN]
   */
  public static void main(String[] args) throws JMSException, IOException {
    
    // Analyser les arguments
    if (args.length < 3) {
      throw new IllegalArgumentException(
          "Usage: SIBusSender <DEST_URL> <BUS_NAME> <PROVIDER_ENDPOINTS> [TARGET_TRANSPORT_CHAIN]");
    }    
    String destUrl = args[0];
    String busName = args[1];
    String providerEndpoints = args[2];    
    String targetTransportChain = "InboundBasicMessaging";
    if (args.length >= 4) targetTransportChain = args[3];
    
    // Obtenir la fabrique
    JmsFactoryFactory jmsFact = JmsFactoryFactory.getInstance();

    // Créer une destination JMS
    Destination dest;
    if (destUrl.startsWith("topic://")) {
      JmsTopic topic = jmsFact.createTopic(destUrl);
      // Les méthodes d'accès set peuvent être appelées ici pour configurer le sujet
      dest = topic ;
    }
    else {
      JmsQueue queue = jmsFact.createQueue(destUrl);
      // Les méthodes d'accès set peuvent être appelées ici pour configurer la file d'attente
      dest = queue;
    }
        
    // Créer une fabrique de connexions JMC unifiée
    JmsConnectionFactory connFact = jmsFact.createConnectionFactory();
    
    // Configurer la fabrique de connexions
    connFact.setBusName(busName);
    connFact.setProviderEndpoints(providerEndpoints);
    connFact.setTargetTransportChain(targetTransportChain);
    
    // Créer la connexion
    Connection conn = connFact.createConnection();
    
    Session session = null;
    MessageProducer producer = null;
    try {
      
      // Créer une session
      session = conn.createSession(false, // Not transactional 
                                   Session.AUTO_ACKNOWLEDGE);
      
      // Créer un fournisseur de messages
      producer = session.createProducer(dest);
      
      // Diffuser en boucle des lignes de texte à partir de la console à des fins d'envoi
      System.out.println("Ready to send to " + dest + " on bus " + busName);
      BufferedReader lineInput = new BufferedReader(new InputStreamReader(System.in));      
      String line = lineInput.readLine();
      while (line != null && line.length() > 0) {
        
        // Créer un message texte incluant la ligne
        TextMessage message = session.createTextMessage();
        message.setText(line);
        
        // Envoyer le message
        producer.send(message,
                      Message.DEFAULT_DELIVERY_MODE,
                      Message.DEFAULT_PRIORITY,
                      Message.DEFAULT_TIME_TO_LIVE);        
        
        // Lire la ligne qui suit
        line = lineInput.readLine();
      }
      
    }
    // Puis bloquer pour s'assurer de la fermeture des objets JMS 
    finally {
      
      // Fermer le fournisseur de messages
      try {
        if (producer != null) producer.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close message producer: " + e);
      }
      
      // Fermer la session
      try {
        if (session != null) session.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close session: " + e);
      }
      
      // Fermer la connexion
      try {
        conn.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close connection: " + e);
      }
      
    }
  }

}

Icône indiquant le type de rubrique Rubrique de référence



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=rjn_pgmng_api_dmp
Nom du fichier : rjn_pgmng_api_dmp.html