Package org.jgroups.blocks
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.
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:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected RpcDispatcher
Deprecated.protected final org.apache.commons.logging.Log
Deprecated.Deprecated. -
Constructor Summary
ConstructorsConstructorDescriptionDistributedHashtable
(String groupname, ChannelFactory factory, String properties, boolean persistent, long state_timeout) Deprecated.Creates a DisttributedHashtable.DistributedHashtable
(String groupname, ChannelFactory factory, String properties, long state_timeout) Deprecated.Creates a DistributedHashtableDistributedHashtable
(PullPushAdapter adapter, Serializable id) Deprecated.DistributedHashtable
(PullPushAdapter adapter, Serializable id, long state_timeout) Deprecated.Uses a user-provided PullPushAdapter to create the dispatcher rather than a Channel.DistributedHashtable
(Channel channel, boolean persistent, long state_timeout) Deprecated.DistributedHashtable
(Channel channel, long state_timeout) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionvoid
_clear()
Deprecated.Deprecated.void
Deprecated.Deprecated.void
Deprecated.void
block()
Deprecated.Block sending and receiving of messages until ViewAccepted is calledvoid
clear()
Deprecated.Clears this hashtable so that it contains no keysDeprecated.Deprecated.Deprecated.boolean
Deprecated.byte[]
getState()
Deprecated.Answers the group state; e.g., when joining.void
getState
(OutputStream ostream) Deprecated.Allows an application to write a state through a provided OutputStream.byte[]
Deprecated.Allows an application to provide a partial state as a byte arrayvoid
getState
(String state_id, OutputStream ostream) Deprecated.Allows an application to write a partial state through a provided OutputStream.protected final void
init
(long state_timeout) Deprecated.static void
Deprecated.Deprecated.Maps the specified key to the specified value in the hashtable.void
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.void
Deprecated.Called when a message is received.Deprecated.Removes the key (and its corresponding value) from the Hashtable.void
Deprecated.void
setDeadlockDetection
(boolean flag) Deprecated.void
setPersistent
(boolean p) Deprecated.void
setState
(byte[] new_state) Deprecated.Sets the group state; e.g., when joining.void
setState
(InputStream istream) Deprecated.Allows an application to read a state through a provided InputStream.void
Deprecated.Allows an application to read a partial state indicated by state_id from a given state byte array parameter.void
setState
(String state_id, InputStream istream) Deprecated.Allows an application to read a partial state through a provided InputStream.final void
start
(long state_timeout) Deprecated.Fetches the statevoid
stop()
Deprecated.void
Deprecated.Called when a member is suspectedvoid
unblock()
Deprecated.Called after the FLUSH protocol has unblocked previously blocked senders, and messages can be sent again.void
viewAccepted
(View new_view) Deprecated.Called when a change in membership has occurred.Methods inherited from class java.util.Hashtable
clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, merge, putIfAbsent, rehash, remove, replace, replace, replaceAll, size, toString, values
-
Field Details
-
disp
Deprecated. -
state_promise
Deprecated. -
log
protected final org.apache.commons.logging.Log logDeprecated.
-
-
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 joinfactory
- The ChannelFactory which will be used to create a channelproperties
- 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 usedstate_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 thePersistenceManager
.- Parameters:
groupname
- Name of the group to joinfactory
- Instance of a ChannelFactory to create the channelproperties
- Protocol stack properties. This will override the properties of the factory. If null, then the factory properties will be usedpersistent
- Whether the contents should be persistedstate_timeout
- Max number of milliseconds to wait until state is retrieved- Throws:
ChannelException
-
DistributedHashtable
Deprecated. -
DistributedHashtable
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 transportid
- 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
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
Deprecated. -
getGroupName
Deprecated. -
getChannel
Deprecated. -
getPersistent
public boolean getPersistent()Deprecated. -
setPersistent
public void setPersistent(boolean p) Deprecated. -
setDeadlockDetection
public void setDeadlockDetection(boolean flag) Deprecated. -
addNotifier
Deprecated. -
removeNotifier
Deprecated. -
stop
public void stop()Deprecated. -
put
Deprecated.Maps the specified key to the specified value in the hashtable. Neither of both parameters can be null -
putAll
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. -
clear
public void clear()Deprecated.Clears this hashtable so that it contains no keys -
remove
Deprecated.Removes the key (and its corresponding value) from the Hashtable. -
_put
Deprecated. -
_putAll
Deprecated.- See Also:
-
_clear
public void _clear()Deprecated. -
_remove
Deprecated. -
receive
Deprecated.Description copied from interface:MessageListener
Called when a message is received.- Specified by:
receive
in interfaceMessageListener
- Parameters:
msg
-
-
getState
public byte[] getState()Deprecated.Description copied from interface:MessageListener
Answers the group state; e.g., when joining.- Specified by:
getState
in interfaceMessageListener
- 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 interfaceMessageListener
- Parameters:
new_state
-
-
viewAccepted
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 whenChannel.connect(String)
returns.- Specified by:
viewAccepted
in interfaceMembershipListener
-
suspect
Deprecated.Called when a member is suspected- Specified by:
suspect
in interfaceMembershipListener
-
block
public void block()Deprecated.Block sending and receiving of messages until ViewAccepted is called- Specified by:
block
in interfaceMembershipListener
-
main
Deprecated. -
getState
Deprecated.Description copied from interface:ExtendedMessageListener
Allows an application to provide a partial state as a byte array- Specified by:
getState
in interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requested- Returns:
- partial state for the given state_id
-
getState
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 interfaceExtendedMessageListener
- Parameters:
ostream
- the OutputStream- See Also:
-
getState
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 interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedostream
- the OutputStream- See Also:
-
setState
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 interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedstate
- partial state for the given state_id
-
setState
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 interfaceExtendedMessageListener
- Parameters:
istream
- the InputStream- See Also:
-
setState
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 interfaceExtendedMessageListener
- Parameters:
state_id
- id of the partial state requestedistream
- 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 interfaceExtendedMembershipListener
-
ReplicatedHashMap
instead