Ejemplo: Configuración programada de un recurso para el proveedor de mensajería predeterminado

En este ejemplo, se crea una conexión JMS con un bus de integración de servicios utilizando la API del paquete com.ibm.websphere.sib. Esta es una alternativa al uso de JNDI para la búsqueda de fábricas de conexiones configuradas de forma programada. Una vez establecida la conexión, el ejemplo lee las líneas de entrada de la consola y las envía como mensajes de texto JMS al destino especificado.

Este ejemplo se puede ejecutar como una aplicación de cliente ligero o como una aplicación de cliente estándar.
/* 
 * Programa de ejemplo 
 * © COPYRIGHT International Business Machines Corp. 2009
 * Todos los derechos reservados * Material bajo licencia - Propiedad de IBM
 *
 * Este programa de ejemplo se proporciona TAL CUAL y se puede utilizar, ejecutar,
 * copiar y modificar sin que el cliente deba abonar ninguna cuota
 *
 * (a) para su propia formación y estudio,
 * (b) para desarrollar aplicaciones diseñadas para su ejecución con un producto
 *     IBM WebSphere para el uso interno del propio cliente.
 */
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;

/**
 * Código de ejemplo para crear de forma programada una conexión con un bus y
 * enviar un mensaje de texto.
 * 
 * Líneas de mandato de ejemplo:
 *   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 {
    
    // Analizar los argumentos
    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];
    
    // Obtener la fábrica de fábricas
    JmsFactoryFactory jmsFact = JmsFactoryFactory.getInstance();

    // Crear un destino JMS
    Destination dest;
    if (destUrl.startsWith("topic://")) {
      JmsTopic topic = jmsFact.createTopic(destUrl);
      // Aquí se pueden invocar métodos setter para configurar el tema
      dest = topic ;
    }
    else {
      JmsQueue queue = jmsFact.createQueue(destUrl);
      // Aquí se pueden invocar métodos setter para configurar la cola
      dest = queue;
    }
        
    // Crear una fábrica de conexiones JMS unificada
    JmsConnectionFactory connFact = jmsFact.createConnectionFactory();
    
    // Configurar la fábrica de conexiones
    connFact.setBusName(busName);
    connFact.setProviderEndpoints(providerEndpoints);
    connFact.setTargetTransportChain(targetTransportChain);
    
    // Crear la conexión
    Connection conn = connFact.createConnection();
    
    Session session = null;
    MessageProducer producer = null;
    try {
      
      // Crear una sesión
      session = conn.createSession(false, // No transaccional 
                                   Session.AUTO_ACKNOWLEDGE);      
      // Crear un generador de mensajes
      producer = session.createProducer(dest);
      
      // Crear un bucle de líneas de texto de lectura desde la consola para su envío
      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) {
        
        // Crear un mensaje de texto que contiene la línea
        TextMessage message = session.createTextMessage();
        message.setText(line);
        
        // Enviar el mensaje
        producer.send(message,
                      Message.DEFAULT_DELIVERY_MODE,
                      Message.DEFAULT_PRIORITY,
                      Message.DEFAULT_TIME_TO_LIVE);        
        
        // Leer la línea siguiente
        line = lineInput.readLine();
      }
      
    }
    // Bloquear finalmente para asegurarse de que se cierran los objetos JMS 
    finally {
      
      // Cerrar el generador de mensajes
      try {
        if (producer != null) producer.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close message producer: " + e);
      }
      
      // Cerrar la sesión
      try {
        if (session != null) session.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close session: " + e);
      }
      
      // Cerrar la conexión
      try {
        conn.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close connection: " + e);
      }
      
    }
  }

}

Icon that indicates the type of topic Reference topic



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