org.jboss.cache.loader
Class TcpDelegatingCacheLoader

java.lang.Object
  extended by org.jboss.cache.loader.AbstractCacheLoader
      extended by org.jboss.cache.loader.TcpDelegatingCacheLoader
All Implemented Interfaces:
CacheLoader

public class TcpDelegatingCacheLoader
extends AbstractCacheLoader

DelegatingCacheLoader implementation which delegates to a remote (not in the same VM) CacheImpl using TCP/IP for communication. Example configuration for connecting to a TcpCacheServer running at myHost:12345:

 org.jboss.cache.loader.TcpDelegatingCacheLoader
 
 host=localhost
 port=2099
 
 

Version:
$Id: TcpDelegatingCacheLoader.java 5189 2008-01-22 13:30:36Z manik.surtani@jboss.com $
Author:
Bela Ban

Field Summary
 
Fields inherited from class org.jboss.cache.loader.AbstractCacheLoader
cache, regionManager, transactions
 
Constructor Summary
TcpDelegatingCacheLoader()
           
 
Method Summary
protected  boolean _exists(Fqn name)
           
protected  Map<Object,Object> _get(Fqn name)
           
protected  Set<?> _getChildrenNames(Fqn fqn)
           
protected  void _put(Fqn name, Map<Object,Object> attributes)
           
protected  Object _put(Fqn name, Object key, Object value)
           
protected  void _put(List<Modification> modifications)
           
protected  void _remove(Fqn fqn)
           
protected  Object _remove(Fqn fqn, Object key)
           
protected  void _removeData(Fqn fqn)
           
 boolean exists(Fqn name)
          Returns true if the CacheLoader has a node with a Fqn.
 Map<Object,Object> get(Fqn name)
          Returns all keys and values from the persistent store, given a Fqn
 CacheLoaderConfig.IndividualCacheLoaderConfig getConfig()
          Gets the configuration.
 Set<?> getChildrenNames(Fqn fqn)
          Returns a set of children node names.
protected  Object invokeWithRetries(Method m, Object... params)
          Invokes the specified Method with the specified parameters, catching SocketExceptions and attempting to reconnect to the TcpCacheServer if necessary.
 void loadEntireState(ObjectOutputStream os)
          Fetches the entire state for this cache from secondary storage (disk, database) and writes it to a provided ObjectOutputStream.
 void loadState(Fqn subtree, ObjectOutputStream os)
          Fetches a portion of the state for this cache from secondary storage (disk, database) and writes it to a provided ObjectOutputStream.
 void put(Fqn name, Map<Object,Object> attributes)
          Puts all entries of the map into the existing map of the given node, overwriting existing keys, but not clearing the existing map before insertion.
 Object put(Fqn name, Object key, Object value)
          Puts a key and value into the attribute map of a given node.
 void put(List<Modification> modifications)
          Applies all modifications to the backend store.
 void remove(Fqn fqn)
          Removes the given node and all its subnodes, does nothing if the node does not exist.
 Object remove(Fqn fqn, Object key)
          Removes the given key and value from the attributes of the given node.
 void removeData(Fqn fqn)
          Removes all attributes from a given node, but doesn't delete the node itself or any subnodes.
protected  void restart()
           
 void setConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
          Allows configuration via XML config file.
 void start()
          Lifecycle method, called when the cache loader is started.
 void stop()
          Lifecycle method, called when the cache loader is stopped.
 void storeEntireState(ObjectInputStream is)
          Stores the entire state for this cache by reading it from a provided ObjectInputStream.
 void storeState(Fqn subtree, ObjectInputStream is)
          Stores the given portion of the cache tree's state in secondary storage.
 
Methods inherited from class org.jboss.cache.loader.AbstractCacheLoader
commit, create, destroy, doMarshall, doUnmarshall, getMarshaller, getNodeDataList, loadStateHelper, prepare, put, regionAwareMarshall, regionAwareUnmarshall, rollback, setCache, setRegionManager
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TcpDelegatingCacheLoader

public TcpDelegatingCacheLoader()
Method Detail

setConfig

public void setConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
Allows configuration via XML config file.

Parameters:
base - May be an instance of the CacheLoaderConfig.IndividualCacheLoaderConfig base class, in which case the cache loader should use the CacheLoaderConfig.IndividualCacheLoaderConfig.getProperties() method to find configuration information. Alternatively, may be a type-specific subclass of CacheLoaderConfig.IndividualCacheLoaderConfig, if there is one.

getConfig

public CacheLoaderConfig.IndividualCacheLoaderConfig getConfig()
Description copied from interface: CacheLoader
Gets the configuration.

Returns:
the configuration, represented by a CacheLoaderConfig.IndividualCacheLoaderConfig object.

invokeWithRetries

protected Object invokeWithRetries(Method m,
                                   Object... params)
Invokes the specified Method with the specified parameters, catching SocketExceptions and attempting to reconnect to the TcpCacheServer if necessary.

Parameters:
m - method to invoke
params - parameters
Returns:
method return value

getChildrenNames

public Set<?> getChildrenNames(Fqn fqn)
                        throws Exception
Description copied from interface: CacheLoader
Returns a set of children node names. All names are relative to this parent Fqn. Returns null if the named node is not found or there are no children. The returned set must not be modifiable. Implementors can use Collections.unmodifiableSet(java.util.Set) to make the set unmodifiable.

Implementors may impose restrictions on the contents of an Fqn (such as Strings-only) and as such, indirectly impose the same restriction on the contents of a Set returned by getChildrenNames().

Parameters:
fqn - The Fqn of the parent
Returns:
Set a set of children. Returns null if no children nodes are present, or the parent is not present
Throws:
Exception

get

public Map<Object,Object> get(Fqn name)
                       throws Exception
Description copied from interface: CacheLoader
Returns all keys and values from the persistent store, given a Fqn

Parameters:
name - the Fqn to search for.
Returns:
Map keys and values for the given node. Returns null if the node is not found. If the node is found but has no attributes, this method returns an empty Map.
Throws:
Exception

exists

public boolean exists(Fqn name)
               throws Exception
Description copied from interface: CacheLoader
Returns true if the CacheLoader has a node with a Fqn.

Returns:
true if node exists, false otherwise
Throws:
Exception

put

public Object put(Fqn name,
                  Object key,
                  Object value)
           throws Exception
Description copied from interface: CacheLoader
Puts a key and value into the attribute map of a given node. If the node does not exist, all parent nodes from the root down are created automatically. Returns the old value.

Throws:
Exception

put

public void put(Fqn name,
                Map<Object,Object> attributes)
         throws Exception
Description copied from interface: CacheLoader
Puts all entries of the map into the existing map of the given node, overwriting existing keys, but not clearing the existing map before insertion. This is the same behavior as Map.putAll(java.util.Map). If the node does not exist, all parent nodes from the root down are created automatically

Parameters:
name - The fully qualified name of the node
attributes - A Map of attributes. Can be null
Throws:
Exception

put

public void put(List<Modification> modifications)
         throws Exception
Description copied from interface: CacheLoader
Applies all modifications to the backend store. Changes may be applied in a single operation.

Specified by:
put in interface CacheLoader
Overrides:
put in class AbstractCacheLoader
Parameters:
modifications - A List of modifications
Throws:
Exception

remove

public Object remove(Fqn fqn,
                     Object key)
              throws Exception
Description copied from interface: CacheLoader
Removes the given key and value from the attributes of the given node. Does nothing if the node doesn't exist Returns the removed value.

Throws:
Exception

remove

public void remove(Fqn fqn)
            throws Exception
Description copied from interface: CacheLoader
Removes the given node and all its subnodes, does nothing if the node does not exist.

Parameters:
fqn - the Fqn of the node
Throws:
Exception

removeData

public void removeData(Fqn fqn)
                throws Exception
Description copied from interface: CacheLoader
Removes all attributes from a given node, but doesn't delete the node itself or any subnodes.

Parameters:
fqn - the Fqn of the node
Throws:
Exception

_getChildrenNames

protected Set<?> _getChildrenNames(Fqn fqn)
                            throws Exception
Throws:
Exception

_get

protected Map<Object,Object> _get(Fqn name)
                           throws Exception
Throws:
Exception

_exists

protected boolean _exists(Fqn name)
                   throws Exception
Throws:
Exception

_put

protected Object _put(Fqn name,
                      Object key,
                      Object value)
               throws Exception
Throws:
Exception

_put

protected void _put(Fqn name,
                    Map<Object,Object> attributes)
             throws Exception
Throws:
Exception

_put

protected void _put(List<Modification> modifications)
             throws Exception
Throws:
Exception

_remove

protected Object _remove(Fqn fqn,
                         Object key)
                  throws Exception
Throws:
Exception

_remove

protected void _remove(Fqn fqn)
                throws Exception
Throws:
Exception

_removeData

protected void _removeData(Fqn fqn)
                    throws Exception
Throws:
Exception

start

public void start()
           throws IOException
Description copied from interface: CacheLoader
Lifecycle method, called when the cache loader is started.

Specified by:
start in interface CacheLoader
Overrides:
start in class AbstractCacheLoader
Throws:
IOException

stop

public void stop()
Description copied from interface: CacheLoader
Lifecycle method, called when the cache loader is stopped.

Specified by:
stop in interface CacheLoader
Overrides:
stop in class AbstractCacheLoader

restart

protected void restart()
                throws IOException
Throws:
IOException

loadEntireState

public void loadEntireState(ObjectOutputStream os)
                     throws Exception
Description copied from interface: CacheLoader
Fetches the entire state for this cache from secondary storage (disk, database) and writes it to a provided ObjectOutputStream. State written to the provided ObjectOutputStream parameter is used for initialization of a new CacheImpl instance. When the state gets transferred to the new cache instance its cacheloader calls CacheLoader.storeEntireState(ObjectInputStream)

Implementations of this method should not catch any exception or close the given ObjectOutputStream parameter. In order to ensure cacheloader interoperability contents of the cache are written to the ObjectOutputStream as a sequence of NodeData objects.

Default implementation is provided by AbstractCacheLoader and ensures cacheloader interoperability. Implementors are encouraged to consider extending AbstractCacheLoader prior to implementing completely custom cacheloader.

Specified by:
loadEntireState in interface CacheLoader
Overrides:
loadEntireState in class AbstractCacheLoader
Parameters:
os - ObjectOutputStream to write state
Throws:
Exception
See Also:
AbstractCacheLoader.loadEntireState(ObjectOutputStream), NodeData

loadState

public void loadState(Fqn subtree,
                      ObjectOutputStream os)
               throws Exception
Description copied from interface: CacheLoader
Fetches a portion of the state for this cache from secondary storage (disk, database) and writes it to a provided ObjectOutputStream. State written to the provided ObjectOutputStream parameter is used for activation of a portion of a new CacheImpl instance. When the state gets transferred to the new cache instance its cacheloader calls CacheLoader.storeState(Fqn,ObjectInputStream).

Implementations of this method should not catch any exception or close the given ObjectOutputStream parameter. In order to ensure cacheloader interoperability contents of the cache are written to the ObjectOutputStream as a sequence of NodeData objects.

Default implementation is provided by AbstractCacheLoader and ensures cacheloader interoperability. Implementors are encouraged to consider extending AbstractCacheLoader prior to implementing completely custom cacheloader.

Specified by:
loadState in interface CacheLoader
Overrides:
loadState in class AbstractCacheLoader
Parameters:
subtree - Fqn naming the root (i.e. highest level parent) node of the subtree for which state is requested.
os - ObjectOutputStream to write state
Throws:
Exception
See Also:
AbstractCacheLoader.loadState(Fqn,ObjectOutputStream), Region.activate(), NodeData

storeEntireState

public void storeEntireState(ObjectInputStream is)
                      throws Exception
Description copied from interface: CacheLoader
Stores the entire state for this cache by reading it from a provided ObjectInputStream. The state was provided to this cache by calling CacheLoader.loadEntireState(ObjectOutputStream)} on some other cache instance. State currently in storage gets overwritten.

Implementations of this method should not catch any exception or close the given ObjectInputStream parameter. In order to ensure cacheloader interoperability contents of the cache are read from the ObjectInputStream as a sequence of NodeData objects.

Default implementation is provided by AbstractCacheLoader and ensures cacheloader interoperability. Implementors are encouraged to consider extending AbstractCacheLoader prior to implementing completely custom cacheloader.

Specified by:
storeEntireState in interface CacheLoader
Overrides:
storeEntireState in class AbstractCacheLoader
Parameters:
is - ObjectInputStream to read state
Throws:
Exception
See Also:
AbstractCacheLoader.storeEntireState(ObjectInputStream), NodeData

storeState

public void storeState(Fqn subtree,
                       ObjectInputStream is)
                throws Exception
Description copied from interface: CacheLoader
Stores the given portion of the cache tree's state in secondary storage. Overwrite whatever is currently in secondary storage. If the transferred state has Fqns equal to or children of parameter subtree, then no special behavior is required. Otherwise, ensure that the state is integrated under the given subtree. Typically in the latter case subtree would be the Fqn of the buddy backup region for a buddy group; e.g.

If the the transferred state had Fqns starting with "/a" and subtree was "/_BUDDY_BACKUP_/192.168.1.2:5555" then the state should be stored in the local persistent store under "/_BUDDY_BACKUP_/192.168.1.2:5555/a"

Implementations of this method should not catch any exception or close the given ObjectInputStream parameter. In order to ensure cacheloader interoperability contents of the cache are read from the ObjectInputStream as a sequence of NodeData objects.

Default implementation is provided by AbstractCacheLoader and ensures cacheloader interoperability. Implementors are encouraged to consider extending AbstractCacheLoader prior to implementing completely custom cacheloader.

Specified by:
storeState in interface CacheLoader
Overrides:
storeState in class AbstractCacheLoader
Parameters:
subtree - Fqn naming the root (i.e. highest level parent) node of the subtree included in state. If the Fqns of the data included in state are not already children of subtree, then their Fqns should be altered to make them children of subtree before they are persisted.
is - ObjectInputStream to read state
Throws:
Exception
See Also:
AbstractCacheLoader.storeState(Fqn,ObjectInputStream), NodeData


Copyright © 2008 JBoss, a division of Red Hat. All Rights Reserved.