7. September 2010  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!

JMS API

von shark,  28.05.2001 23:09:17  (1 vote) Kommentare (1)  [vote]
Die Java Message Service API (JMS API) ist eine Schnittstelle für den Austausch von Nachrichten/Informationen zwischen Applikationen die auf verschiedenen Rechnern im Netzwerk laufen. Messaging Systeme werden auch Message-Oriented Middleware (MOM) Systeme genannt. Solche Systeme zeichnen sich  durch Fehlertoleranz, Skalierbarkeit, Load Balancing und Support für Transaktionen aus. Der nachfolgende Code Auszug zeigt eine einfache Messaging Applikation die nach dem Push Prinzip implementiert wurde. Das Push Prinzip beinhaltet Nachrichten von einem Producer (Publisher) zu Consumern (Subscriber) zu senden. Die Verbindung wird über ein Topic hergestellt. Das Topic ist der virtuelle Kanal zwischen dem Producer der Nachricht und den Consumern. Die Consumer bekommen Nachrichten für das entsprechende Topic, für das sie sich registriert haben, automatisch zugestellt. Es findet kein Polling bzw. keine Abfrage von Nachrichten statt. Weitere Informationen zur Java Message Service API finden Sie über den Link: http://java.sun.com/jms
// Beispiel einer Messaging Applikation
package de.components.jms.sample;

// Import der java packages
import javax.jms.*;
import javax.naming.*;
import java.io.*;
import java.util.*;

// Beispielklasse
public class JmsSample implements javax.jms.MessageListener
{
  // Private Attribute
  private TopicSession    oPubSession;
  private TopicSession    oSubSession;
  private TopicPublisher  oPublisher;
  private TopicSubscriber oSubscriber;
  private TopicConnection oConnection;
  private String          strUserName;
  private String          strPassword;
  private String          strTopic;

  // set-Methoden
 
  // Setzen des Usernamens
  public void setUserName(String pstrUserName)
  {
    if(null != pstrUserName)
    {
      strUserName = pstrUserName;
    }
  }
 
  // Setzen des Passwortes
  public void setPassword(String pstrPassword)
  {
    if(null != pstrPassword)
    {
      strPassword = pstrPassword;
    }
  }

  // Setzen des Topics
  public void setTopic(String pstrTopic)
  {
    if(null != pstrTopic)
    {
      strTopic = pstrTopic;
    }
  }
 
  // Start Methode
  public start() throws Exception
  { 
    // JNDI Verbindung aufbauen
    Properties oEnvironment = new Properties();
    // ... JNDI Properties in Abhanegigkeit von dem
    // ... verwendeten Messaging Service setzen

    // JNDI Kontext erzeugen
    InitialContext oJndi = new InitialContext(oEnvironment);

    // Referenz auf ein JMS Verbindungsobjekt holen
    TopicConnectionFactory oConnectionFactory = (TopicConnectionFactory) oJndi.lookup("TopicConnectionFactory");

    // Erzeugen einer JMS Verbindung
    oConnection= oConnectionFactory.createTopicConnection(strUserName, strPassword);

    // Erzeugen von JMS Session Objekten
    oPubSession = oConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    oSubSession = oConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

    // Look up des JMS Topics
    Topic oTopic = (Topic) oJndi.lookup(strTopic);

    // Erzeugen eines JMS Publishers und Subscriber
    oPublisher  = oPubSession.createPublisher(strTopic);
    oSubscriber = oSubSession.createSubscriber(strTopic);

    // Setzen des JMS Listeners
    oSubscriber.setMessageListener(this);

    // Starten der Verbindung
    oConncetion.start();
  }

  // CallBack-Methode --> Nachrichten vom Subscriber Topic empfangen
  public void onMessage(Message poMessage)
  {
    try
    {
      // Empfangene Nachricht in Textnachricht umwandeln
      TextMessage oTextMessage = (TextMessage) poMessage;

      // Text ausgeben
      System.out.println((String) oTextMessage.getText());
    }
    catch(JMSException exc)
    {
      exc.printStackTrace();
    } 
  }

  // Nachricht erzeugen und senden
  protected void writeMessage(String pstrText) throws JMSException
  {
    if(null != pstrText)
    {
      // Textnachricht erzeugen
      TextMessage oMessage = oPubSession.createTextMessage();

      // Text setzen
      oMessage.setText(pstrText);

      // Nachricht senden
      oPublisher.publish(oMessage);     
    }
  }   

  // Verbindung schliessen
  public void close() throws JMSException
  {
    oConnection.close();
  }

  // Hauptprogramm --> Konsolenanwendung
  public static void main(String[] args)
  {
    try
    {
      // Parameter pruefen 
      if(3 != args.length)
      { 
        System.out.println("Aufruf: java JmsSample user password topic"); 
        System.exit(0); 
      }

      // Sample Objekt erzeugen
      JmsSample oJmsSample = new JmsSample();

      // Setzen der Laufzeitparameter
      oJmsSample.setUserName(args[0]);
      oJmsSample.setPassword(args[1]);
      oJmsSample.setTopic(args[2]);

      // Messaging system starten
      oJmsSample.start();

      // Buffered Reader Objekt erzeugen
      BufferedReader oCommandLine = new BufferedReader(new InpitStreamReader(System.in));

      // Loop bis das Wort "ende" eingegeben wurde
      while(true)
      {
        // Kommandozeile lesen
        String strCommandLine = oCommandLine.readLine();

        if(strCommandLine.equalsIgnoreCase("ende"))
        {
          // Message Service Verbindung und Anwendung beenden
          oJmsSample.close();
          System.exit(0);
        }
     
        // Nachricht senden
        oJmsSample.writeMessage(strCommandLine);
      } 
    }
    catch(Exception exc)
    {
      exc.printStackTrace();
    }     
  }
}

<< zurück


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.