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
    Version:
    $Id: GossipRouter.java,v 1.26.2.9 2009/02/12 20:05:54 vlada Exp $
    Author:
    Bela Ban, Ovidiu Feodorov
    • Field Detail

      • 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