JBoss.org Community Documentation
The interaction between JBoss Cache and a
CacheLoader
implementation is as follows. When
CacheLoaderConfiguration
(see below) is non-null, an
instance of each configured
CacheLoader
is created when the cache is created, and started when the cache is started.
CacheLoader.create()
and
CacheLoader.start()
are called when the cache is
started. Correspondingly,
stop()
and
destroy()
are called when the cache is
stopped.
Next,
setConfig()
and
setCache()
are called. The latter can be used to
store a reference to the cache, the former is used to configure this
instance of the
CacheLoader
. For example, here a database cache loader
could establish a connection to the database.
The
CacheLoader
interface has a set of methods that are called
when no transactions are used:
get()
,
put()
,
remove()
and
removeData()
: they get/set/remove the value
immediately. These methods are described as javadoc comments in the
interface.
Then there are three methods that are used with transactions:
prepare()
,
commit()
and
rollback()
. The
prepare()
method
is called when a transaction is to be committed. It has a transaction
object and a list of modfications as argument. The transaction object
can be used as a key into a hashmap of transactions, where the values
are the lists of modifications. Each modification list has a number of
Modification
elements, which represent the changes
made to a cache for a given transaction. When
prepare()
returns successfully, then the cache loader
must
be able to commit (or rollback) the
transaction successfully.
JBoss Cache takes care of calling prepare(), commit() and rollback() on the cache loaders at the right time.
The
commit()
method tells the cache loader to
commit the transaction, and the
rollback()
method
tells the cache loader to discard the changes associated with that
transaction.
See the javadocs on this interface for a detailed explanation on each method and the contract implementations would need to fulfil.