org.jgroups.stack

Class GossipRouter


public class GossipRouter
extends java.lang.Object

Router for TCP based group comunication (using layer TCP instead of UDP). Instead of the TCP layer sending packets point-to-point to each other member, it sends the packet to the router which - depending on the target address - multicasts or unicasts it to the group / or single member.

This class is especially interesting for applets which cannot directly make connections (neither UDP nor TCP) to a host different from the one they were loaded from. Therefore, an applet would create a normal channel plus protocol stack, but the bottom layer would have to be the TCP layer which sends all packets point-to-point (over a TCP connection) to the router, which in turn forwards them to their end location(s) (also over TCP). A centralized router would therefore have to be running on the host the applet was loaded from.

An alternative for running JGroups in an applet (IP multicast is not allows in applets as of 1.2), is to use point-to-point UDP communication via the gossip server. However, then the appplet has to be signed which involves additional administrative effort on the part of the user.

Since 2.1.1 the GossipRouter is also able to answer Gossip requests. Instead of running different Router and GossipServer processes, is enough just to run a single GossipRouter. This should simplify the administration of a JG realm that has needs gossip and routing services.

Authors:
Bela Ban
Ovidiu Feodorov
Since:
2.1.1

Field Summary

static int
DUMP
static long
EXPIRY_TIME
static int
GET
static long
GOSSIP_REQUEST_TIMEOUT
static int
PORT
static int
REGISTER
static long
ROUTING_CLIENT_REPLY_TIMEOUT
static int
SHUTDOWN
static int
SHUTDOWN_OK
protected Log
log

Constructor Summary

GossipRouter()
GossipRouter(int port)
GossipRouter(int port, String bindAddressString)
GossipRouter(int port, String bindAddressString, long expiryTime)
GossipRouter(int port, String bindAddressString, long expiryTime, long gossipRequestTimeout, long routingClientReplyTimeout)

Method Summary

void
create()
JBoss MBean lifecycle operation.
void
destroy()
JBoss MBean lifecycle operation.
String
dumpGossipTable()
String
dumpRoutingTable()
String
getBindAddress()
long
getExpiryTime()
long
getGossipRequestTimeout()
int
getPort()
long
getRoutingClientReplyTimeout()
boolean
isStarted()
static void
main(String[] args)
static String
requestTypeToString(int type)
void
setBindAddress(String bindAddress)
void
setExpiryTime(long expiryTime)
void
setGossipRequestTimeout(long gossipRequestTimeout)
void
setPort(int port)
void
setRoutingClientReplyTimeout(long routingClientReplyTimeout)
void
start()
JBoss MBean lifecycle operation.
void
stop()
JBoss MBean lifecycle operation.

Field Details

DUMP

public static final int DUMP
Field Value:
-21

EXPIRY_TIME

public static final long EXPIRY_TIME
Field Value:
30000L

GET

public static final int GET
Field Value:
-10

GOSSIP_REQUEST_TIMEOUT

public static final long GOSSIP_REQUEST_TIMEOUT
Field Value:
1000L

PORT

public static final int PORT
Field Value:
8980

REGISTER

public static final int REGISTER
Field Value:
-11

ROUTING_CLIENT_REPLY_TIMEOUT

public static final long ROUTING_CLIENT_REPLY_TIMEOUT
Field Value:
120000L

SHUTDOWN

public static final int SHUTDOWN
Field Value:
-1

SHUTDOWN_OK

public static final int SHUTDOWN_OK
Field Value:
-2

log

protected Log log

Constructor Details

GossipRouter

public GossipRouter()

GossipRouter

public GossipRouter(int port)

GossipRouter

public GossipRouter(int port,
                    String bindAddressString)

GossipRouter

public GossipRouter(int port,
                    String bindAddressString,
                    long expiryTime)

GossipRouter

public GossipRouter(int port,
                    String bindAddressString,
                    long expiryTime,
                    long gossipRequestTimeout,
                    long routingClientReplyTimeout)

Method Details

create

public void create()
            throws Exception
JBoss MBean lifecycle operation.

destroy

public void destroy()
JBoss MBean lifecycle operation.

dumpGossipTable

public String dumpGossipTable()

dumpRoutingTable

public String dumpRoutingTable()

getBindAddress

public String getBindAddress()

getExpiryTime

public long getExpiryTime()

getGossipRequestTimeout

public long getGossipRequestTimeout()

getPort

public int getPort()

getRoutingClientReplyTimeout

public long getRoutingClientReplyTimeout()

isStarted

public boolean isStarted()

main

public static void main(String[] args)
            throws Exception

requestTypeToString

public static String requestTypeToString(int type)

setBindAddress

public void setBindAddress(String bindAddress)

setExpiryTime

public void setExpiryTime(long expiryTime)

setGossipRequestTimeout

public void setGossipRequestTimeout(long gossipRequestTimeout)

setPort

public void setPort(int port)

setRoutingClientReplyTimeout

public void setRoutingClientReplyTimeout(long routingClientReplyTimeout)

start

public void start()
            throws Exception
JBoss MBean lifecycle operation. Called after create(). When this method is called, the managed attributes have already been set.
Brings the Router in fully functional state.

stop

public void stop()
JBoss MBean lifecycle operation. The JMX agent allways calls this method before destroy(). Close connections and frees resources.

Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.