Class SimpleTcpCluster

    • Field Detail

      • log

        public static final Log log
        Logger for this class.
      • BEFORE_MEMBERREGISTER_EVENT

        public static final java.lang.String BEFORE_MEMBERREGISTER_EVENT
        Lifecycle event fired before a member is registered.
        See Also:
        Constant Field Values
      • AFTER_MEMBERREGISTER_EVENT

        public static final java.lang.String AFTER_MEMBERREGISTER_EVENT
        Lifecycle event fired after a member is registered.
        See Also:
        Constant Field Values
      • BEFORE_MANAGERREGISTER_EVENT

        public static final java.lang.String BEFORE_MANAGERREGISTER_EVENT
        Lifecycle event fired before a manager is registered.
        See Also:
        Constant Field Values
      • AFTER_MANAGERREGISTER_EVENT

        public static final java.lang.String AFTER_MANAGERREGISTER_EVENT
        Lifecycle event fired after a manager is registered.
        See Also:
        Constant Field Values
      • BEFORE_MANAGERUNREGISTER_EVENT

        public static final java.lang.String BEFORE_MANAGERUNREGISTER_EVENT
        Lifecycle event fired before a manager is unregistered.
        See Also:
        Constant Field Values
      • AFTER_MANAGERUNREGISTER_EVENT

        public static final java.lang.String AFTER_MANAGERUNREGISTER_EVENT
        Lifecycle event fired after a manager is unregistered.
        See Also:
        Constant Field Values
      • BEFORE_MEMBERUNREGISTER_EVENT

        public static final java.lang.String BEFORE_MEMBERUNREGISTER_EVENT
        Lifecycle event fired before a member is unregistered.
        See Also:
        Constant Field Values
      • AFTER_MEMBERUNREGISTER_EVENT

        public static final java.lang.String AFTER_MEMBERUNREGISTER_EVENT
        Lifecycle event fired after a member is unregistered.
        See Also:
        Constant Field Values
      • SEND_MESSAGE_FAILURE_EVENT

        public static final java.lang.String SEND_MESSAGE_FAILURE_EVENT
        Lifecycle event fired when sending a message fails.
        See Also:
        Constant Field Values
      • RECEIVE_MESSAGE_FAILURE_EVENT

        public static final java.lang.String RECEIVE_MESSAGE_FAILURE_EVENT
        Lifecycle event fired when receiving a message fails.
        See Also:
        Constant Field Values
      • channel

        protected Channel channel
        Group channel.
      • sm

        protected static final StringManager sm
        The string manager for this package.
      • clusterName

        protected java.lang.String clusterName
        The cluster name to join
      • heartbeatBackgroundEnabled

        protected boolean heartbeatBackgroundEnabled
        call Channel.heartbeat() at container background thread
        See Also:
        GroupChannel.heartbeat()
      • container

        protected Container container
        The Container associated with this Cluster.
      • support

        protected final java.beans.PropertyChangeSupport support
        The property change support for this component.
      • managers

        protected final java.util.Map<java.lang.String,​ClusterManager> managers
        The context name <-> manager association for distributed contexts.
      • managerTemplate

        protected ClusterManager managerTemplate
        Template used to create new cluster managers for contexts.
      • clusterListeners

        protected final java.util.List<ClusterListener> clusterListeners
        Listeners of messages
      • hasMembers

        protected boolean hasMembers
        has members
    • Constructor Detail

      • SimpleTcpCluster

        public SimpleTcpCluster()
        Creates a new SimpleTcpCluster instance.
    • Method Detail

      • isHeartbeatBackgroundEnabled

        public boolean isHeartbeatBackgroundEnabled()
        Returns whether the heartbeat background thread is enabled.
        Returns:
        true if heartbeat is enabled in the background
      • setHeartbeatBackgroundEnabled

        public void setHeartbeatBackgroundEnabled​(boolean heartbeatBackgroundEnabled)
        Enables or disables the heartbeat background thread that calls heartbeat on the channel.
        Parameters:
        heartbeatBackgroundEnabled - true to enable background heartbeat
      • setClusterName

        public void setClusterName​(java.lang.String clusterName)
        Set the name of the cluster to join, if no cluster with this name is present create one.
        Specified by:
        setClusterName in interface Cluster
        Parameters:
        clusterName - The clustername to join
      • getClusterName

        public java.lang.String getClusterName()
        Return the name of the cluster that this Server is currently configured to operate within.
        Specified by:
        getClusterName in interface Cluster
        Returns:
        The name of the cluster associated with this server
      • setContainer

        public void setContainer​(Container container)
        Set the Container with which this instance is associated.
        Specified by:
        setContainer in interface Contained
        Parameters:
        container - The Container instance with which this instance is to be associated, or null to disassociate this instance from any Container
      • getContainer

        public Container getContainer()
        Get the Container with which this instance is associated.
        Specified by:
        getContainer in interface Contained
        Returns:
        The Container with which this instance is associated or null if not associated with a Container
      • isNotifyLifecycleListenerOnFailure

        public boolean isNotifyLifecycleListenerOnFailure()
        Return whether the lifecycle listener should be notified on failure.
        Returns:
        true if the lifecycle listener should be notified on failure
      • setNotifyLifecycleListenerOnFailure

        public void setNotifyLifecycleListenerOnFailure​(boolean notifyListenerOnFailure)
        Set whether the lifecycle listener should be notified on failure.
        Parameters:
        notifyListenerOnFailure - true to notify the lifecycle listener on failure
      • addValve

        public void addValve​(Valve valve)
        Add cluster valve. Cluster Valves are only add to container when cluster is started.
        Specified by:
        addValve in interface CatalinaCluster
        Parameters:
        valve - The new cluster Valve.
      • getValves

        public Valve[] getValves()
        Returns the current cluster valves.
        Specified by:
        getValves in interface CatalinaCluster
        Returns:
        the current cluster valves
      • findClusterListeners

        public ClusterListener[] findClusterListeners()
        Get the cluster listeners associated with this cluster. If this Array has no listeners registered, a zero-length array is returned.
        Returns:
        the listener array
      • addClusterListener

        public void addClusterListener​(ClusterListener listener)
        Add cluster message listener and register cluster to this listener.
        Specified by:
        addClusterListener in interface CatalinaCluster
        Parameters:
        listener - The new listener
      • removeClusterListener

        public void removeClusterListener​(ClusterListener listener)
        Remove message listener and deregister Cluster from listener.
        Specified by:
        removeClusterListener in interface CatalinaCluster
        Parameters:
        listener - The listener to remove
      • setClusterDeployer

        public void setClusterDeployer​(ClusterDeployer clusterDeployer)
        Set a new Deployer, must be set before the cluster started.
        Specified by:
        setClusterDeployer in interface CatalinaCluster
        Parameters:
        clusterDeployer - The associated deployer
      • setChannel

        public void setChannel​(Channel channel)
        Set the channel associated with the cluster.
        Specified by:
        setChannel in interface CatalinaCluster
        Parameters:
        channel - the channel
      • setManagerTemplate

        public void setManagerTemplate​(ClusterManager managerTemplate)
        Sets the manager template used to create new cluster managers.
        Parameters:
        managerTemplate - the manager template
      • setChannelSendOptions

        public void setChannelSendOptions​(int channelSendOptions)
        Sets the channel send options as an integer flag value.
        Parameters:
        channelSendOptions - the send options
      • setChannelSendOptions

        public void setChannelSendOptions​(java.lang.String channelSendOptions)
        Sets the channel send options as a comma-separated string of option names.
        Parameters:
        channelSendOptions - the send options as a string
      • hasMembers

        public boolean hasMembers()
        Checks if the cluster has members.
        Specified by:
        hasMembers in interface CatalinaCluster
        Returns:
        true if the cluster has members.
      • getMembers

        public Member[] getMembers()
        Returns all the members currently participating in the cluster.
        Specified by:
        getMembers in interface CatalinaCluster
        Returns:
        an array containing all the members currently participating in the cluster.
      • getLocalMember

        public Member getLocalMember()
        Returns the member that represents this node.
        Specified by:
        getLocalMember in interface CatalinaCluster
        Returns:
        the member that represents this node.
      • getManagers

        public java.util.Map<java.lang.String,​ClusterManager> getManagers()
        Returns the map of managers.
        Specified by:
        getManagers in interface CatalinaCluster
        Returns:
        The map of managers
      • getChannel

        public Channel getChannel()
        Returns the channel associated with the cluster.
        Specified by:
        getChannel in interface CatalinaCluster
        Returns:
        the channel associated with the cluster
      • getManagerTemplate

        public ClusterManager getManagerTemplate()
        Returns the manager template used to create new cluster managers.
        Returns:
        the manager template
      • getChannelSendOptions

        public int getChannelSendOptions()
        Returns the channel send options as an integer flag value.
        Returns:
        the channel send options
      • getChannelSendOptionsName

        public java.lang.String getChannelSendOptionsName()
        returns the SendOptions as a comma separated list of names for use by JMX
        Returns:
        a comma separated list of the option names
      • createManager

        public Manager createManager​(java.lang.String name)
        Create a new manager which will use this cluster to replicate its sessions.
        Specified by:
        createManager in interface Cluster
        Parameters:
        name - Name (key) of the application with which the manager is associated
        Returns:
        The newly created Manager instance
      • registerManager

        public void registerManager​(Manager manager)
        Register a manager with the cluster. If the cluster is not responsible for creating a manager, then the container will at least notify the cluster that this manager is participating in the cluster.
        Specified by:
        registerManager in interface Cluster
        Parameters:
        manager - Manager
      • removeManager

        public void removeManager​(Manager manager)
        Removes a manager from the cluster
        Specified by:
        removeManager in interface Cluster
        Parameters:
        manager - Manager
      • getManagerName

        public java.lang.String getManagerName​(java.lang.String name,
                                               Manager manager)
        Get a new cluster name for a manager.
        Specified by:
        getManagerName in interface CatalinaCluster
        Parameters:
        name - Override name (optional)
        manager - The manager
        Returns:
        the manager name in the cluster
      • getManager

        public Manager getManager​(java.lang.String name)
        Get Manager
        Specified by:
        getManager in interface CatalinaCluster
        Parameters:
        name - The manager name
        Returns:
        The manager
      • backgroundProcess

        public void backgroundProcess()
        Execute a periodic task, such as reloading, etc. This method will be invoked inside the classloading context of this container. Unexpected throwables will be caught and logged.
        Specified by:
        backgroundProcess in interface Cluster
      • checkDefaults

        protected void checkDefaults()
        Sets default values for cluster listeners, valves, deployer, and channel when they have not been configured explicitly.
      • registerClusterValve

        protected void registerClusterValve()
        register all cluster valve to host or engine
      • unregisterClusterValve

        protected void unregisterClusterValve()
        unregister all cluster valve to host or engine
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • send

        public void send​(ClusterMessage msg)
        Sends a message to all the members in the cluster
        Specified by:
        send in interface CatalinaCluster
        Parameters:
        msg - ClusterMessage
      • send

        public void send​(ClusterMessage msg,
                         Member dest)
        Sends a message to a specific member in the cluster.
        Specified by:
        send in interface CatalinaCluster
        Parameters:
        msg - ClusterMessage
        dest - Member
      • send

        public void send​(ClusterMessage msg,
                         Member dest,
                         int sendOptions)
        Sends a message with the specified sendOptions to a specific member in the cluster.
        Specified by:
        send in interface CatalinaCluster
        Parameters:
        msg - ClusterMessage
        dest - Member
        sendOptions - sendOptions
      • memberAdded

        public void memberAdded​(Member member)
        A member was added to the group
        Specified by:
        memberAdded in interface MembershipListener
        Parameters:
        member - Member - the member that was added
      • memberDisappeared

        public void memberDisappeared​(Member member)
        A member was removed from the group
        If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data
        Specified by:
        memberDisappeared in interface MembershipListener
        Parameters:
        member - Member
        See Also:
        Member.SHUTDOWN_PAYLOAD
      • accept

        public boolean accept​(java.io.Serializable msg,
                              Member sender)
        Invoked by the channel to determine if the listener will process this message or not.
        Specified by:
        accept in interface ChannelListener
        Parameters:
        msg - Serializable
        sender - Member
        Returns:
        boolean
      • messageReceived

        public void messageReceived​(java.io.Serializable message,
                                    Member sender)
        Receive a message from the channel
        Specified by:
        messageReceived in interface ChannelListener
        Parameters:
        message - Serializable
        sender - - the source of the message
      • messageReceived

        public void messageReceived​(ClusterMessage message)
        Processes a received cluster message by dispatching it to registered cluster listeners.
        Parameters:
        message - the cluster message that was received
      • getChannelStartOptions

        public int getChannelStartOptions()
        Returns the channel start options.
        Returns:
        the channel start options
      • setChannelStartOptions

        public void setChannelStartOptions​(int channelStartOptions)
        Sets the channel start options.
        Parameters:
        channelStartOptions - the channel start options
      • getDomainInternal

        protected java.lang.String getDomainInternal()
        Returns the JMX domain for this cluster, derived from the associated container.
        Specified by:
        getDomainInternal in class LifecycleMBeanBase
        Returns:
        the JMX domain, or null if no container is set
      • getObjectNameKeyProperties

        protected java.lang.String getObjectNameKeyProperties()
        Returns the key properties used to build the JMX ObjectName for this cluster.
        Specified by:
        getObjectNameKeyProperties in class LifecycleMBeanBase
        Returns:
        the key properties string for JMX registration