Class StaticMembershipProvider

java.lang.Object
org.apache.catalina.tribes.membership.MembershipProviderBase
org.apache.catalina.tribes.membership.StaticMembershipProvider
All Implemented Interfaces:
ChannelListener, RpcCallback, Heartbeat, MembershipProvider

public class StaticMembershipProvider extends MembershipProviderBase implements RpcCallback, ChannelListener, Heartbeat
Provider that manages static membership for a cluster.
  • Field Details

    • sm

      protected static final StringManager sm
      String manager for this class.
    • channel

      protected Channel channel
      The channel associated with this provider.
    • rpcChannel

      protected RpcChannel rpcChannel
      RPC channel for sending messages.
    • staticMembers

      protected ArrayList<StaticMember> staticMembers
      List of static members for this cluster.
    • sendOptions

      protected int sendOptions
      Send options flag for channel messages.
    • expirationTime

      protected long expirationTime
      Time in milliseconds after which a member is considered expired.
    • connectTimeout

      protected int connectTimeout
      Socket connection timeout in milliseconds.
    • rpcTimeout

      protected long rpcTimeout
      RPC operation timeout in milliseconds.
    • startLevel

      protected int startLevel
      Current start level bitmask.
    • useThread

      protected boolean useThread
      Whether to use a background thread for pinging.
    • pingInterval

      protected long pingInterval
      Interval between ping messages in milliseconds.
    • running

      protected volatile boolean running
      Whether the ping thread is currently running.
    • thread

      Background ping thread instance.
  • Constructor Details

    • StaticMembershipProvider

      public StaticMembershipProvider()
      Default constructor.
  • Method Details

    • init

      public void init(Properties properties) throws Exception
      Description copied from interface: MembershipProvider
      Initialize the membership provider with the specified configuration.
      Specified by:
      init in interface MembershipProvider
      Overrides:
      init in class MembershipProviderBase
      Parameters:
      properties - configuration
      Throws:
      Exception - if an error occurs
    • start

      public void start(int level) throws Exception
      Description copied from interface: MembershipProvider
      Start the membership provider.
      Specified by:
      start in interface MembershipProvider
      Parameters:
      level - the readiness level
      • Channel.DEFAULT - will start all services
      • Channel.MBR_RX_SEQ - starts the membership receiver
      • Channel.MBR_TX_SEQ - starts the membership broadcaster
      Throws:
      Exception - if an error occurs
    • stop

      public boolean stop(int level) throws Exception
      Description copied from interface: MembershipProvider
      Stop the membership provider.
      Specified by:
      stop in interface MembershipProvider
      Parameters:
      level - the readiness level
      • Channel.DEFAULT - will stop all services
      • Channel.MBR_RX_SEQ - stops the membership receiver
      • Channel.MBR_TX_SEQ - stops the membership broadcaster
      Returns:
      true if successful
      Throws:
      Exception - if an error occurs
    • startMembership

      protected void startMembership(Member[] members) throws ChannelException
      Sends start messages to the given members.
      Parameters:
      members - the members to notify
      Throws:
      ChannelException - if sending fails
    • setupMember

      protected Member setupMember(Member mbr)
      Sets up a member after it joins. Override for customization.
      Parameters:
      mbr - the member to set up
      Returns:
      the configured member
    • memberAdded

      protected void memberAdded(Member member)
      Handles the addition of a new member to the cluster.
      Parameters:
      member - the member that was added
    • memberDisappeared

      protected void memberDisappeared(Member member)
      Handles the disappearance of a member from the cluster.
      Parameters:
      member - the member that disappeared
    • memberAlive

      protected void memberAlive(Member member)
      Updates the alive status of a member.
      Parameters:
      member - the member to update
    • stopMembership

      protected void stopMembership(Member[] members)
      Sends stop messages to the given members.
      Parameters:
      members - the members to notify
    • messageReceived

      public void messageReceived(Serializable msg, Member sender)
      Description copied from interface: ChannelListener
      Receive a message from the channel
      Specified by:
      messageReceived in interface ChannelListener
      Parameters:
      msg - Serializable
      sender - - the source of the message
    • accept

      public boolean accept(Serializable msg, Member sender)
      Description copied from interface: ChannelListener
      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
    • replyRequest

      public Serializable replyRequest(Serializable msg, Member sender)
      Description copied from interface: RpcCallback
      Allows sending a response to a received message.
      Specified by:
      replyRequest in interface RpcCallback
      Parameters:
      msg - The message
      sender - Member
      Returns:
      Serializable object, null if no reply should be sent
    • leftOver

      public void leftOver(Serializable msg, Member sender)
      Description copied from interface: RpcCallback
      If the reply has already been sent to the requesting thread, the rpc callback can handle any data that comes in after the fact.
      Specified by:
      leftOver in interface RpcCallback
      Parameters:
      msg - The message
      sender - Member
    • heartbeat

      public void heartbeat()
      Description copied from interface: Heartbeat
      Heartbeat invocation for resources cleanup etc
      Specified by:
      heartbeat in interface Heartbeat
    • ping

      protected void ping() throws ChannelException
      Sends ping messages to all static members and checks for expired members.
      Throws:
      ChannelException - if pinging fails
    • checkExpired

      protected void checkExpired()
      Checks for and removes expired members.
    • setChannel

      public void setChannel(Channel channel)
      Sets the channel for this provider.
      Parameters:
      channel - the channel
    • setStaticMembers

      public void setStaticMembers(ArrayList<StaticMember> staticMembers)
      Sets the static members for this cluster.
      Parameters:
      staticMembers - the list of static members