站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > JBoss 3.2.7 Cache API Documentation 英文版文档

CacheLoader (JBoss Cache API) - JBoss 3.2.7 Cache API Documentation 英文版文档


org.jboss.cache.loader
Interface CacheLoader

All Superinterfaces:
org.jboss.system.Service
All Known Subinterfaces:
CacheLoaderAop
All Known Implementing Classes:
BdbjeCacheLoader, DelegatingCacheLoader, FileCacheLoader, JDBCCacheLoader, SharedStoreCacheLoader

public interface CacheLoader
extends org.jboss.system.Service

Implementations need to load an object given a key from secondary storage, or store an object under a given key in secondary storage (e.g. DB, filesystem).
Lifecycle: first an instance of the loader is created, then the configuration (#setConfig(String)) and cache (setCache(TreeCache)) are set. After this, Service.create() is called. Then @start() is called. When re-deployed, Service.stop() will be called, followed by another Service.start(). Finally, when shut down, Service.destroy() is called, after which the loader is unusable.

Version:
$Id: CacheLoader.java,v 1.1.2.5 2004/12/30 17:08:27 starksm Exp $
Author:
Bela Ban Oct 31, 2003

Method Summary
 void commit(Object tx)
          Commit the transaction.
 boolean exists(Fqn name)
          Checks whether the CacheLoader has a node with Fqn
 Map get(Fqn name)
          Returns all keys and values from the persistent store, given a fully qualified name
 Object get(Fqn name, Object key)
          Returns the value for a given key.
 Set getChildrenNames(Fqn fqn)
          Returns a list of children names, all names are relative.
 byte[] loadEntireState()
          Fetch the entire state for this cache from secondary storage (disk, DB) and return it as a byte buffer.
 void prepare(Object tx, List modifications, boolean one_phase)
          Prepare the modifications.
 void put(Fqn name, Map attributes)
          Inserts all elements of attributes into the attributes hashmap of the given node, overwriting existing attributes, but not clearing the existing hashmap before insertion (making it a union of existing and new attributes) If the node does not exist, all parent nodes from the root down are created automatically
 Object put(Fqn name, Object key, Object value)
          Inserts key and value into the attributes hashmap of the given node.
 void put(List modifications)
          Inserts all modifications to the backend store.
 void remove(Fqn name)
          Removes the given node.
 Object remove(Fqn name, Object key)
          Removes the given key and value from the attributes of the given node.
 void removeData(Fqn name)
          Removes all attributes from a given node, but doesn't delete the node itself
 void rollback(Object tx)
          Roll the transaction back.
 void setCache(TreeCache c)
          This method allows the CacheLoader to set the TreeCache, therefore allowing the CacheLoader to invoke methods of the TreeCache.
 void setConfig(Properties url)
          Sets the configuration.
 void storeEntireState(byte[] state)
          Store the given state in secondary storage.
 
Methods inherited from interface org.jboss.system.Service
create, destroy, start, stop
 

Method Detail

setConfig

public void setConfig(Properties url)
Sets the configuration. Will be called before Service.create() and Service.start()

Parameters:
url - A list of properties, defined in the XML file

setCache

public void setCache(TreeCache c)
This method allows the CacheLoader to set the TreeCache, therefore allowing the CacheLoader to invoke methods of the TreeCache. It can also use the TreeCache to fetch configuration information. Alternatively, the CacheLoader could maintain its own configuration
This method will be called directly after the CacheLoader instance has been created

Parameters:
c - The cache on which this loader works

getChildrenNames

public Set getChildrenNames(Fqn fqn)
                     throws Exception
Returns a list of children names, all names are relative. Returns null if the parent node is not found. The returned set must not be modified, e.g. use Collections.unmodifiableSet(s) to return the result

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

get

public Object get(Fqn name,
                  Object key)
           throws Exception
Returns the value for a given key. Returns null if the node doesn't exist, or the value is not bound

Parameters:
name -
Returns:
Throws:
Exception

get

public Map get(Fqn name)
        throws Exception
Returns all keys and values from the persistent store, given a fully qualified name

Parameters:
name -
Returns:
Map of keys and values for the given node. Returns null if the node was not found, or if the node has no attributes
Throws:
Exception

exists

public boolean exists(Fqn name)
               throws Exception
Checks whether the CacheLoader has a node with Fqn

Parameters:
name -
Returns:
True if node exists, false otherwise
Throws:
Exception

put

public Object put(Fqn name,
                  Object key,
                  Object value)
           throws Exception
Inserts key and value into the attributes hashmap of the 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 attributes)
         throws Exception
Inserts all elements of attributes into the attributes hashmap of the given node, overwriting existing attributes, but not clearing the existing hashmap before insertion (making it a union of existing and new attributes) 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 modifications)
         throws Exception
Inserts all modifications to the backend store. Overwrite whatever is already in the datastore.

Parameters:
modifications - A List of modifications
Throws:
Exception

remove

public Object remove(Fqn name,
                     Object key)
              throws Exception
Removes the given key and value from the attributes of the given node. No-op if node doesn't exist

Throws:
Exception

remove

public void remove(Fqn name)
            throws Exception
Removes the given node. If the node is the root of a subtree, this will recursively remove all subnodes, depth-first

Throws:
Exception

removeData

public void removeData(Fqn name)
                throws Exception
Removes all attributes from a given node, but doesn't delete the node itself

Parameters:
name -
Throws:
Exception

prepare

public void prepare(Object tx,
                    List modifications,
                    boolean one_phase)
             throws Exception
Prepare the modifications. For example, for a DB-based CacheLoader:
  1. Create a local (JDBC) transaction
  2. Associate the local transaction with tx (tx is the key)
  3. Execute the coresponding SQL statements against the DB (statements derived from modifications)
For non-transactional CacheLoader (e.g. file-based), this could be a null operation

Parameters:
tx - The transaction, just used as a hashmap key
modifications - List, a list of all modifications within the given transaction
one_phase - Persist immediately and (for example) commit the local JDBC transaction as well. When true, we won't get a commit(Object) or rollback(Object) method call later
Throws:
Exception

commit

public void commit(Object tx)
            throws Exception
Commit the transaction. A DB-based CacheLoader would look up the local JDBC transaction asociated with tx and commit that transaction
Non-transactional CacheLoaders could simply write the data that was previously saved transiently under the given tx key, to (for example) a file system (note this only holds if the previous prepare() did not define one_phase=true

Parameters:
tx -
Throws:
Exception

rollback

public void rollback(Object tx)
Roll the transaction back. A DB-based CacheLoader would look up the local JDBC transaction asociated with tx and roll back that transaction

Parameters:
tx -

loadEntireState

public byte[] loadEntireState()
                       throws Exception
Fetch the entire state for this cache from secondary storage (disk, DB) and return it as a byte buffer. This is for initialization of a new cache from a remote cache. The new cache would then call storeEntireState().
todo: define binary format for exchanging state

Throws:
Exception

storeEntireState

public void storeEntireState(byte[] state)
                      throws Exception
Store the given state in secondary storage. Overwrite whatever is currently in seconday storage.

Throws:
Exception


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.