This package is in fact a WASP package named persistent_store.
It provides three instances of interfaces declared in core (sequence store)
and in ws_rm (source and destination message store). These instances
are registered in Context by the
PersistentStoreModule.
It is not used directly to allows easy replacement with for example
memory implementation (if delivery over WASP failure is not required).
PersistentStoreModule registers into the context wrapper
that ensure that the db_interface.jar is not used if is not needed
(because it requires configuration that is needed only for WS-RM).
Also the wrapper combines the core API implementation and the management
API configuration. Also it determined (traslation from String to int)
code for the wasp instance. All code in the package works only in rows
that belong to the current wasp instance.
Used by all three components is class DbPersistentStoreTerminator
(except management API implementation classes which run in transactions
provided by db_interface's TransactionManager). Its job
is to translate CurrentTransaction (from core) resource terminators
to database transaction from TransactionManager. See methods
ensureTx and closeTx.
Sequence store uses two tables - one for sequence data and the other for queues of sequences. It assumes that all sequence keys the user can have comes from this package - and uses that as stored object and such avoid translation to some specialized storable objects.
Message tables have some common columns and stores implementation share some code. There is one table for source messages and one table for destination messages.
Sequence and message stores are not connected except for method unblock() on sequence store that is dispatched to one message store.