org.jgroups.client
Class StompConnection

java.lang.Object
  extended by org.jgroups.client.StompConnection
All Implemented Interfaces:
java.lang.Runnable

public class StompConnection
extends java.lang.Object
implements java.lang.Runnable

STOMP client to access the STOMP [1] protocol. Note that the full STOMP protocol is not implemented, e.g. transactions are currently not supported.

The interactive client can be started with -h HOST -p PORT, which are the hostname and port of a JGroups server, running with STOMP in its stack configuration. The interactive client supports automatic failover to a different server if the currently connected-to server crashes, and a simple syntax for sending STOMP messages:

 subscribe DEST // example: subscribe /topics/a
 send DEST message // example: send /topics/a Hello world
 

[1] http://stomp.codehaus.org/Protocol

Author:
Bela Ban

Nested Class Summary
static interface StompConnection.Listener
           
 
Field Summary
protected  java.io.DataInputStream in
           
protected  java.util.Set<StompConnection.Listener> listeners
           
protected  Log log
           
protected  java.io.DataOutputStream out
           
protected  java.lang.Thread runner
           
protected  boolean running
           
protected  java.util.Set<java.lang.String> server_destinations
           
protected  java.lang.String session_id
           
protected  java.net.Socket sock
           
protected  java.util.Set<java.lang.String> subscriptions
           
 
Constructor Summary
StompConnection(java.lang.String dest)
           
 
Method Summary
 void addListener(StompConnection.Listener listener)
           
protected  void close()
           
 void connect()
           
protected  void connect(java.lang.String dest)
           
 void connect(java.lang.String userid, java.lang.String password)
           
 void disconnect()
           
 java.lang.String getSessionId()
           
 boolean isConnected()
           
static void main(java.lang.String[] args)
           
protected  void notifyListeners(java.util.Map<java.lang.String,java.lang.String> info)
           
protected  void notifyListeners(java.util.Map<java.lang.String,java.lang.String> headers, byte[] buf, int offset, int length)
           
protected static java.net.SocketAddress parse(java.lang.String dest)
           
protected  java.lang.String pickRandomDestination()
           
 void reconnect()
           
 void removeListener(StompConnection.Listener listener)
           
 void run()
           
 void send(java.lang.String destination, byte[] buf)
           
 void send(java.lang.String destination, byte[] buf, int offset, int length)
           
 void send(java.lang.String destination, byte[] buf, int offset, int length, java.lang.String... headers)
           
 void send(java.lang.String destination, java.lang.String... headers)
          Sends an INFO without body
protected  void startRunner()
           
 void subscribe(java.lang.String destination)
           
 void unsubscribe(java.lang.String destination)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sock

protected java.net.Socket sock

in

protected java.io.DataInputStream in

out

protected java.io.DataOutputStream out

server_destinations

protected final java.util.Set<java.lang.String> server_destinations

listeners

protected final java.util.Set<StompConnection.Listener> listeners

subscriptions

protected final java.util.Set<java.lang.String> subscriptions

runner

protected java.lang.Thread runner

running

protected volatile boolean running

session_id

protected java.lang.String session_id

log

protected final Log log
Constructor Detail

StompConnection

public StompConnection(java.lang.String dest)
Parameters:
dest - IP address + ':' + port, e.g. "192.168.1.5:8787"
Method Detail

getSessionId

public java.lang.String getSessionId()

addListener

public void addListener(StompConnection.Listener listener)

removeListener

public void removeListener(StompConnection.Listener listener)

connect

public void connect(java.lang.String userid,
                    java.lang.String password)
             throws java.io.IOException
Throws:
java.io.IOException

reconnect

public void reconnect()
               throws java.io.IOException
Throws:
java.io.IOException

connect

public void connect()
             throws java.io.IOException
Throws:
java.io.IOException

disconnect

public void disconnect()

subscribe

public void subscribe(java.lang.String destination)

unsubscribe

public void unsubscribe(java.lang.String destination)

send

public void send(java.lang.String destination,
                 byte[] buf,
                 int offset,
                 int length,
                 java.lang.String... headers)

send

public void send(java.lang.String destination,
                 java.lang.String... headers)
Sends an INFO without body


send

public void send(java.lang.String destination,
                 byte[] buf,
                 int offset,
                 int length)

send

public void send(java.lang.String destination,
                 byte[] buf)

run

public void run()
Specified by:
run in interface java.lang.Runnable

notifyListeners

protected void notifyListeners(java.util.Map<java.lang.String,java.lang.String> headers,
                               byte[] buf,
                               int offset,
                               int length)

notifyListeners

protected void notifyListeners(java.util.Map<java.lang.String,java.lang.String> info)

pickRandomDestination

protected java.lang.String pickRandomDestination()

connect

protected void connect(java.lang.String dest)
                throws java.io.IOException
Throws:
java.io.IOException

parse

protected static java.net.SocketAddress parse(java.lang.String dest)
                                       throws java.net.UnknownHostException
Throws:
java.net.UnknownHostException

close

protected void close()

isConnected

public boolean isConnected()

startRunner

protected void startRunner()

main

public static void main(java.lang.String[] args)
                 throws java.io.IOException
Throws:
java.io.IOException


Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.