Beispiel: Ressource für den Standard-Messaging-Provider über das Programm konfigurieren

In diesem Beispiel wird eine JMS-Verbindung zu einem Service Integration Bus über die Anwendungsprogrammierschnittstelle im Paket com.ibm.websphere.sib erstellt. Dies ist eine Alternative zur Verwendung von JNDI für die Suche administrativ konfigurierter Verbindungsfactorys. Nachdem die Verbindung hergestellt wurde, liest das Beispielprogramm Eingabezeilen aus der Konsole und sendet diese als JMS-Textnachrichten an das angegebene Ziel.

Dieses Beispielprogramm kann als Thin-Client-Anwendung oder als eigenständige Clientanwendung ausgeführt werden.
/* 
 * Beispielprogramm
 * © COPYRIGHT International Business Machines Corp. 2009
 * Alle Rechte vorbehalten * Lizenziertes Material - Eigentum der IBM
 *
 * Dieses Beispielprogramm wird ohne Wartung (auf "as-is"-Basis)
 * bereitgestellt und kann vom Kunden
 *
 * (a) zu Schulungs- und Studienzwecken,
 * (b) zum Entwickeln von Anwendungen für ein IBM WebSphere-Produkt zur
 *     internen Nutzung beim Kunden gebührenfrei genutzt, ausgeführt,
 *     kopiert und geändert werden.
 */
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;

/**
 * Beispielcode zur Erstellung einer Verbindung zu einem Bus und zum Senden einer Textnachricht
 * über das Programm.
 * 
 * Beispielbefehlszeilen:
 *   SIBusSender-Topic://my/topic?topicSpace=Default.Topic.Space MyBus localhost:7276
 *   SIBusSender-Warteschlange://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 {
    
    // Argumente syntaktisch analysieren
    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];
    
    // Factory-Factory abrufen
    JmsFactoryFactory jmsFact = JmsFactoryFactory.getInstance();

    // JMS-Ziel erstellen
    Destination dest;
    if (destUrl.startsWith("topic://")) {
      JmsTopic topic = jmsFact.createTopic(destUrl);
      // Setter-Methoden könnten hier aufgerufen werden, um das Topic zu konfigurieren
      dest = topic ;
    }
    else {
      JmsQueue queue = jmsFact.createQueue(destUrl);
      // Setter-Methoden könnten hier aufgerufen werden, um die Warteschlange zu konfigurieren
      dest = queue;
    }
        
    // Eine einheitliche JMS-Verbindungsfactory erstellen
    JmsConnectionFactory connFact = jmsFact.createConnectionFactory();
    
    // Verbindungsfactory konfigurieren
    connFact.setBusName(busName);
    connFact.setProviderEndpoints(providerEndpoints);
    connFact.setTargetTransportChain(targetTransportChain);
    
    // Verbindung erstellen
    Connection conn = connFact.createConnection();
    
    Session session = null;
    MessageProducer producer = null;
    try {
      
      // Sitzung erstellen
      session = conn.createSession(false, // Not transactional 
                                   Session.AUTO_ACKNOWLEDGE);      
      // Nachrichtenerzeuger erstellen
      producer = session.createProducer(dest);
      
      // Zu sendende Textzeilen aus der Konsole im Schleifenmodus lesen
      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) {
        
        // Textnachricht erstellen, die die Zeile enthält
        TextMessage message = session.createTextMessage();
        message.setText(line);
        
        // Nachricht senden
        producer.send(message,
                      Message.DEFAULT_DELIVERY_MODE,
                      Message.DEFAULT_PRIORITY,
                      Message.DEFAULT_TIME_TO_LIVE);        
        
        // Nächste Zeile lesen
        line = lineInput.readLine();
      }
      
    }
    // Letztendlich blockieren, um sicherzustellen, dass die JMS-Objekte geschlossen werden
    finally {
      
      // Nachrichtenerzeuger schließen
      try {
        if (producer != null) producer.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close message producer: " + e);
      }
      
      // Sitzung schließen
      try {
        if (session != null) session.close();
      }
      catch (JMSException e) {
        System.err.println("Failed to close session: " + e);
      }
      
      // Verbindung schließen
      try {
        conn.close();       }
      catch (JMSException e) {
        System.err.println("Failed to close connection: " + e);
      }
      
    }
  }

}

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjn_pgmng_api_dmp
Dateiname:rjn_pgmng_api_dmp.html