Class DistributedHashtable

java.lang.Object
java.util.Dictionary
java.util.Hashtable
org.jgroups.blocks.DistributedHashtable
All Implemented Interfaces:
Serializable, Cloneable, Map, ExtendedMembershipListener, ExtendedMessageListener, MembershipListener, MessageListener

public class DistributedHashtable extends Hashtable implements ExtendedMessageListener, ExtendedMembershipListener
Deprecated.
Use ReplicatedHashMap instead
Provides the abstraction of a java.util.Hashtable that is replicated at several locations. Any change to the hashtable (clear, put, remove etc) will transparently be propagated to all replicas in the group. All read-only methods will always access the local replica.

Both keys and values added to the hashtable must be serializable, the reason being that they will be sent across the network to all replicas of the group. Having said this, it is now for example possible to add RMI remote objects to the hashtable as they are derived from java.rmi.server.RemoteObject which in turn is serializable. This allows to lookup shared distributed objects by their name and invoke methods on them, regardless of one's onw location. A DistributedHashtable thus allows to implement a distributed naming service in just a couple of lines.

An instance of this class will contact an existing member of the group to fetch its initial state (using the state exchange funclet StateExchangeFunclet.

Version:
$Id: DistributedHashtable.java,v 1.33.2.1 2008/02/28 07:31:56 belaban Exp $
Author:
Bela Ban, Alfonso Olias-Sanz
See Also:
  • Field Details

    • disp

      protected transient RpcDispatcher disp
      Deprecated.
    • state_promise

      protected final transient Promise<Boolean> state_promise
      Deprecated.
    • log

      protected final org.apache.commons.logging.Log log
      Deprecated.
  • Constructor Details

    • DistributedHashtable

      public DistributedHashtable(String groupname, ChannelFactory factory, String properties, long state_timeout) throws ChannelException
      Deprecated.
      Creates a DistributedHashtable
      Parameters:
      groupname - The name of the group to join
      factory - The ChannelFactory which will be used to create a channel
      properties - The property string to be used to define the channel. This will override the properties of the factory. If null, then the factory properties will be used
      state_timeout - The time to wait until state is retrieved in milliseconds. A value of 0 means wait forever.
      Throws:
      ChannelException
    • DistributedHashtable

      public DistributedHashtable(String groupname, ChannelFactory factory, String properties, boolean persistent, long state_timeout) throws ChannelException
      Deprecated.
      Creates a DisttributedHashtable. Optionally the contents can be saved to persistemt storage using the PersistenceManager.
      Parameters:
      groupname - Name of the group to join
      factory - Instance of a ChannelFactory to create the channel
      properties - Protocol stack properties. This will override the properties of the factory. If null, then the factory properties will be used
      persistent - Whether the contents should be persisted
      state_timeout - Max number of milliseconds to wait until state is retrieved
      Throws:
      ChannelException
    • DistributedHashtable

      public DistributedHashtable(Channel channel, long state_timeout)
      Deprecated.
    • DistributedHashtable

      public DistributedHashtable(Channel channel, boolean persistent, long state_timeout)
      Deprecated.
    • DistributedHashtable

      public DistributedHashtable(PullPushAdapter adapter, Serializable id, long state_timeout) throws ChannelNotConnectedException, ChannelClosedException
      Deprecated.
      Uses a user-provided PullPushAdapter to create the dispatcher rather than a Channel. If id is non-null, it will be used to register under that id. This is typically used when another building block is already using PullPushAdapter, and we want to add this building block in addition. The id is the used to discriminate between messages for the various blocks on top of PullPushAdapter. If null, we will assume we are the first block created on PullPushAdapter.
      Parameters:
      adapter - The PullPushAdapter which to use as underlying transport
      id - A serializable object (e.g. an Integer) used to discriminate (multiplex/demultiplex) between requests/responses for different building blocks on top of PullPushAdapter.
      state_timeout - Max number of milliseconds to wait until state is retrieved
      Throws:
      ChannelNotConnectedException
      ChannelClosedException
    • DistributedHashtable

      public DistributedHashtable(PullPushAdapter adapter, Serializable id)
      Deprecated.
  • Method Details

    • init

      protected final void init(long state_timeout)
      Deprecated.
    • start

      public final void start(long state_timeout) throws ChannelClosedException, ChannelNotConnectedException
      Deprecated.
      Fetches the state
      Parameters:
      state_timeout -
      Throws:
      ChannelClosedException
      ChannelNotConnectedException
    • getLocalAddress

      public Address getLocalAddress()
      Deprecated.
    • getGroupName

      public String getGroupName()
      Deprecated.
    • getChannel

      public Channel getChannel()
      Deprecated.
    • getPersistent

      public boolean getPersistent()
      Deprecated.
    • setPersistent

      public void setPersistent(boolean p)
      Deprecated.
    • setDeadlockDetection

      public void setDeadlockDetection(boolean flag)
      Deprecated.
    • addNotifier

      public void addNotifier(DistributedHashtable.Notification n)
      Deprecated.
    • removeNotifier

      public void removeNotifier(DistributedHashtable.Notification n)
      Deprecated.
    • stop

      public void stop()
      Deprecated.
    • put

      public Object put(Object key, Object value)
      Deprecated.
      Maps the specified key to the specified value in the hashtable. Neither of both parameters can be null
      Specified by:
      put in interface Map
      Overrides:
      put in class Hashtable
      Parameters:
      key - - the hashtable key
      value - - the value
      Returns:
      the previous value of the specified key in this hashtable, or null if it did not have one
    • putAll

      public void putAll(Map m)
      Deprecated.
      Copies all of the mappings from the specified Map to this Hashtable These mappings will replace any mappings that this Hashtable had for any of the keys currently in the specified Map.
      Specified by:
      putAll in interface Map
      Overrides:
      putAll in class Hashtable
      Parameters:
      m - - Mappings to be stored in this map
    • clear

      public void clear()
      Deprecated.
      Clears this hashtable so that it contains no keys
      Specified by:
      clear in interface Map
      Overrides:
      clear in class Hashtable
    • remove

      public Object remove(Object key)
      Deprecated.
      Removes the key (and its corresponding value) from the Hashtable.
      Specified by:
      remove in interface Map
      Overrides:
      remove in class Hashtable
      Parameters:
      key - - the key to be removed.
      Returns:
      the value to which the key had been mapped in this hashtable, or null if the key did not have a mapping.
    • _put

      public Object _put(Object key, Object value)
      Deprecated.
    • _putAll

      public void _putAll(Map m)
      Deprecated.
      See Also:
    • _clear

      public void _clear()
      Deprecated.
    • _remove

      public Object _remove(Object key)
      Deprecated.
    • receive

      public void receive(Message msg)
      Deprecated.
      Description copied from interface: MessageListener
      Called when a message is received.
      Specified by:
      receive in interface MessageListener
      Parameters:
      msg -
    • getState

      public byte[] getState()
      Deprecated.
      Description copied from interface: MessageListener
      Answers the group state; e.g., when joining.
      Specified by:
      getState in interface MessageListener
      Returns:
      byte[]
    • setState

      public void setState(byte[] new_state)
      Deprecated.
      Description copied from interface: MessageListener
      Sets the group state; e.g., when joining.
      Specified by:
      setState in interface MessageListener
      Parameters:
      new_state -
    • viewAccepted

      public void viewAccepted(View new_view)
      Deprecated.
      Description copied from interface: MembershipListener
      Called when a change in membership has occurred. No long running actions or sending of messages should be done in this callback. If some long running action needs to be performed, it should be done in a separate thread.

      Note that on reception of the first view (a new member just joined), the channel will not yet be in the connected state. This only happens when Channel.connect(String) returns.

      Specified by:
      viewAccepted in interface MembershipListener
    • suspect

      public void suspect(Address suspected_mbr)
      Deprecated.
      Called when a member is suspected
      Specified by:
      suspect in interface MembershipListener
    • block

      public void block()
      Deprecated.
      Block sending and receiving of messages until ViewAccepted is called
      Specified by:
      block in interface MembershipListener
    • main

      public static void main(String[] args)
      Deprecated.
    • getState

      public byte[] getState(String state_id)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to provide a partial state as a byte array
      Specified by:
      getState in interface ExtendedMessageListener
      Parameters:
      state_id - id of the partial state requested
      Returns:
      partial state for the given state_id
    • getState

      public void getState(OutputStream ostream)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to write a state through a provided OutputStream. An application is obligated to always close the given OutputStream reference.
      Specified by:
      getState in interface ExtendedMessageListener
      Parameters:
      ostream - the OutputStream
      See Also:
    • getState

      public void getState(String state_id, OutputStream ostream)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to write a partial state through a provided OutputStream. An application is obligated to always close the given OutputStream reference.
      Specified by:
      getState in interface ExtendedMessageListener
      Parameters:
      state_id - id of the partial state requested
      ostream - the OutputStream
      See Also:
    • setState

      public void setState(String state_id, byte[] state)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to read a partial state indicated by state_id from a given state byte array parameter.
      Specified by:
      setState in interface ExtendedMessageListener
      Parameters:
      state_id - id of the partial state requested
      state - partial state for the given state_id
    • setState

      public void setState(InputStream istream)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to read a state through a provided InputStream. An application is obligated to always close the given InputStream reference.
      Specified by:
      setState in interface ExtendedMessageListener
      Parameters:
      istream - the InputStream
      See Also:
    • setState

      public void setState(String state_id, InputStream istream)
      Deprecated.
      Description copied from interface: ExtendedMessageListener
      Allows an application to read a partial state through a provided InputStream. An application is obligated to always close the given InputStream reference.
      Specified by:
      setState in interface ExtendedMessageListener
      Parameters:
      state_id - id of the partial state requested
      istream - the InputStream
      See Also:
    • unblock

      public void unblock()
      Deprecated.
      Description copied from interface: ExtendedMembershipListener
      Called after the FLUSH protocol has unblocked previously blocked senders, and messages can be sent again. This callback only needs to be implemented if we require a notification of that.
      Specified by:
      unblock in interface ExtendedMembershipListener