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.