Class GossipRouter
- java.lang.Object
-
- org.jgroups.stack.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
- Version:
- $Id: GossipRouter.java,v 1.26.2.9 2009/02/12 20:05:54 vlada Exp $
- Author:
- Bela Ban, Ovidiu Feodorov
-
-
Field Summary
Fields Modifier and Type Field Description static byte
CONNECT
protected ThreadFactory
default_thread_factory
static byte
DISCONNECT
static byte
DUMP
static long
EXPIRY_TIME
static byte
GET_RSP
static byte
GOSSIP_GET
static long
GOSSIP_REQUEST_TIMEOUT
protected org.apache.commons.logging.Log
log
static int
PORT
static byte
REGISTER
static byte
ROUTER_GET
static long
ROUTING_CLIENT_REPLY_TIMEOUT
static byte
SHUTDOWN
protected java.util.concurrent.ExecutorService
thread_pool
protected boolean
thread_pool_enabled
protected long
thread_pool_keep_alive_time
protected int
thread_pool_max_threads
protected int
thread_pool_min_threads
protected java.util.concurrent.BlockingQueue<java.lang.Runnable>
thread_pool_queue
protected boolean
thread_pool_queue_enabled
protected int
thread_pool_queue_max_size
protected java.lang.String
thread_pool_rejection_policy
protected java.util.Timer
timer
static byte
UNREGISTER
-
Constructor Summary
Constructors Constructor Description GossipRouter()
GossipRouter(int port)
GossipRouter(int port, java.lang.String bindAddressString)
GossipRouter(int port, java.lang.String bindAddressString, long expiryTime)
GossipRouter(int port, java.lang.String bindAddressString, long expiryTime, long gossipRequestTimeout, long routingClientReplyTimeout)
Creates a gossip router on a given port bound to a specified interface and an expiry time (in msecs) until a cached 'gossip' member entry expires.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
create()
JBoss MBean lifecycle operation.protected java.util.concurrent.ExecutorService
createThreadPool(int min_threads, int max_threads, long keep_alive_time, java.lang.String rejection_policy, java.util.concurrent.BlockingQueue<java.lang.Runnable> queue, ThreadFactory factory)
void
destroy()
JBoss MBean lifecycle operation.java.lang.String
dumpRoutingTable()
int
getBacklog()
java.lang.String
getBindAddress()
ThreadFactory
getDefaultThreadPoolThreadFactory()
long
getExpiryTime()
long
getGossipRequestTimeout()
Deprecated.long
getLingerTimeout()
int
getPort()
long
getRoutingClientReplyTimeout()
Deprecated.long
getSocketReadTimeout()
long
getThreadPoolKeepAliveTime()
int
getThreadPoolMaxThreads()
int
getThreadPoolMinThreads()
int
getThreadPoolQueueMaxSize()
java.lang.String
getThreadPoolRejectionPolicy()
boolean
isDiscardLoopbacks()
boolean
isStarted()
boolean
isThreadPoolEnabled()
boolean
isThreadPoolQueueEnabled()
static void
main(java.lang.String[] args)
void
setBacklog(int backlog)
void
setBindAddress(java.lang.String bindAddress)
void
setDefaultThreadPoolThreadFactory(ThreadFactory factory)
void
setDiscardLoopbacks(boolean discard_loopbacks)
void
setExpiryTime(long expiryTime)
void
setGossipRequestTimeout(long gossipRequestTimeout)
Deprecated.void
setLingerTimeout(long linger_timeout)
void
setPort(int port)
void
setRoutingClientReplyTimeout(long routingClientReplyTimeout)
Deprecated.void
setSocketReadTimeout(long sock_read_timeout)
void
setThreadPoolEnabled(boolean thread_pool_enabled)
void
setThreadPoolKeepAliveTime(long thread_pool_keep_alive_time)
void
setThreadPoolMaxThreads(int thread_pool_max_threads)
void
setThreadPoolMinThreads(int thread_pool_min_threads)
void
setThreadPoolQueueEnabled(boolean thread_pool_queue_enabled)
void
setThreadPoolQueueMaxSize(int thread_pool_queue_max_size)
void
setThreadPoolRejectionPolicy(java.lang.String thread_pool_rejection_policy)
void
start()
JBoss MBean lifecycle operation.void
stop()
JBoss MBean lifecycle operation.static java.lang.String
type2String(int type)
-
-
-
Field Detail
-
CONNECT
public static final byte CONNECT
- See Also:
- Constant Field Values
-
DISCONNECT
public static final byte DISCONNECT
- See Also:
- Constant Field Values
-
REGISTER
public static final byte REGISTER
- See Also:
- Constant Field Values
-
GOSSIP_GET
public static final byte GOSSIP_GET
- See Also:
- Constant Field Values
-
ROUTER_GET
public static final byte ROUTER_GET
- See Also:
- Constant Field Values
-
GET_RSP
public static final byte GET_RSP
- See Also:
- Constant Field Values
-
UNREGISTER
public static final byte UNREGISTER
- See Also:
- Constant Field Values
-
DUMP
public static final byte DUMP
- See Also:
- Constant Field Values
-
SHUTDOWN
public static final byte SHUTDOWN
- See Also:
- Constant Field Values
-
PORT
public static final int PORT
- See Also:
- Constant Field Values
-
EXPIRY_TIME
public static final long EXPIRY_TIME
- See Also:
- Constant Field Values
-
GOSSIP_REQUEST_TIMEOUT
public static final long GOSSIP_REQUEST_TIMEOUT
- See Also:
- Constant Field Values
-
ROUTING_CLIENT_REPLY_TIMEOUT
public static final long ROUTING_CLIENT_REPLY_TIMEOUT
- See Also:
- Constant Field Values
-
thread_pool_min_threads
protected int thread_pool_min_threads
-
thread_pool_max_threads
protected int thread_pool_max_threads
-
thread_pool_keep_alive_time
protected long thread_pool_keep_alive_time
-
thread_pool_enabled
protected boolean thread_pool_enabled
-
thread_pool_queue_enabled
protected boolean thread_pool_queue_enabled
-
thread_pool_queue_max_size
protected int thread_pool_queue_max_size
-
thread_pool_rejection_policy
protected java.lang.String thread_pool_rejection_policy
-
thread_pool
protected java.util.concurrent.ExecutorService thread_pool
-
thread_pool_queue
protected java.util.concurrent.BlockingQueue<java.lang.Runnable> thread_pool_queue
-
default_thread_factory
protected ThreadFactory default_thread_factory
-
timer
protected java.util.Timer timer
-
log
protected final org.apache.commons.logging.Log log
-
-
Constructor Detail
-
GossipRouter
public GossipRouter()
-
GossipRouter
public GossipRouter(int port)
-
GossipRouter
public GossipRouter(int port, java.lang.String bindAddressString)
-
GossipRouter
public GossipRouter(int port, java.lang.String bindAddressString, long expiryTime)
-
GossipRouter
public GossipRouter(int port, java.lang.String bindAddressString, long expiryTime, long gossipRequestTimeout, long routingClientReplyTimeout)
Creates a gossip router on a given port bound to a specified interface and an expiry time (in msecs) until a cached 'gossip' member entry expires.Remaining two parameters are deprecated and not used.
- Parameters:
port
-bindAddressString
-expiryTime
-gossipRequestTimeout
-routingClientReplyTimeout
-
-
-
Method Detail
-
setPort
public void setPort(int port)
-
getPort
public int getPort()
-
setBindAddress
public void setBindAddress(java.lang.String bindAddress)
-
getBindAddress
public java.lang.String getBindAddress()
-
getBacklog
public int getBacklog()
-
setBacklog
public void setBacklog(int backlog)
-
setExpiryTime
public void setExpiryTime(long expiryTime)
-
getExpiryTime
public long getExpiryTime()
-
setGossipRequestTimeout
@Deprecated public void setGossipRequestTimeout(long gossipRequestTimeout)
Deprecated.
-
getGossipRequestTimeout
@Deprecated public long getGossipRequestTimeout()
Deprecated.
-
setRoutingClientReplyTimeout
@Deprecated public void setRoutingClientReplyTimeout(long routingClientReplyTimeout)
Deprecated.
-
getRoutingClientReplyTimeout
@Deprecated public long getRoutingClientReplyTimeout()
Deprecated.
-
isStarted
public boolean isStarted()
-
isDiscardLoopbacks
public boolean isDiscardLoopbacks()
-
setDiscardLoopbacks
public void setDiscardLoopbacks(boolean discard_loopbacks)
-
getLingerTimeout
public long getLingerTimeout()
-
setLingerTimeout
public void setLingerTimeout(long linger_timeout)
-
getSocketReadTimeout
public long getSocketReadTimeout()
-
setSocketReadTimeout
public void setSocketReadTimeout(long sock_read_timeout)
-
getDefaultThreadPoolThreadFactory
public ThreadFactory getDefaultThreadPoolThreadFactory()
-
setDefaultThreadPoolThreadFactory
public void setDefaultThreadPoolThreadFactory(ThreadFactory factory)
-
getThreadPoolMinThreads
public int getThreadPoolMinThreads()
-
setThreadPoolMinThreads
public void setThreadPoolMinThreads(int thread_pool_min_threads)
-
getThreadPoolMaxThreads
public int getThreadPoolMaxThreads()
-
setThreadPoolMaxThreads
public void setThreadPoolMaxThreads(int thread_pool_max_threads)
-
getThreadPoolKeepAliveTime
public long getThreadPoolKeepAliveTime()
-
setThreadPoolKeepAliveTime
public void setThreadPoolKeepAliveTime(long thread_pool_keep_alive_time)
-
isThreadPoolEnabled
public boolean isThreadPoolEnabled()
-
setThreadPoolEnabled
public void setThreadPoolEnabled(boolean thread_pool_enabled)
-
isThreadPoolQueueEnabled
public boolean isThreadPoolQueueEnabled()
-
setThreadPoolQueueEnabled
public void setThreadPoolQueueEnabled(boolean thread_pool_queue_enabled)
-
getThreadPoolQueueMaxSize
public int getThreadPoolQueueMaxSize()
-
setThreadPoolQueueMaxSize
public void setThreadPoolQueueMaxSize(int thread_pool_queue_max_size)
-
getThreadPoolRejectionPolicy
public java.lang.String getThreadPoolRejectionPolicy()
-
setThreadPoolRejectionPolicy
public void setThreadPoolRejectionPolicy(java.lang.String thread_pool_rejection_policy)
-
type2String
public static java.lang.String type2String(int type)
-
create
public void create() throws java.lang.Exception
JBoss MBean lifecycle operation.- Throws:
java.lang.Exception
-
start
public void start() throws java.lang.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.- Throws:
java.lang.Exception
-
stop
public void stop()
JBoss MBean lifecycle operation. The JMX agent allways calls this method before destroy(). Close connections and frees resources.
-
destroy
public void destroy()
JBoss MBean lifecycle operation.
-
dumpRoutingTable
public java.lang.String dumpRoutingTable()
-
createThreadPool
protected java.util.concurrent.ExecutorService createThreadPool(int min_threads, int max_threads, long keep_alive_time, java.lang.String rejection_policy, java.util.concurrent.BlockingQueue<java.lang.Runnable> queue, ThreadFactory factory)
-
main
public static void main(java.lang.String[] args) throws java.lang.Exception
- Throws:
java.lang.Exception
-
-