The Ganymede server implementation.
Includes all classes and interfaces that comprise the Ganymede server and which are not intended to be directly referenced or used by the Ganymede client or admin console.
The Ganymede server's main()
entrypoint is in the
{@link arlut.csd.ganymede.server.Ganymede} class. The main() method
is responsible for bootstrapping the Ganymede server and getting it
ready for use.
Here is the general order of operations for server startup:
ganymede.db
file on disk,
supplemented by any non-consolidated transaction records in the
Ganymede journal
file.At this point, the server is started and ready for operations. All server operations from this point on will be initiated by the Ganymede Scheduler which is running on its own background thread, or by clients who have connected to the server through RMI. All RMI calls to the server are serviced on independent threads, which cooperate in a multithreaded context via a number of synchronization and queueing systems in the Ganymede server.
Normal clients connect to the server via a call to the Server interface's {@link arlut.csd.ganymede.rmi.Server#login(String,String)} method, which returns a remote RMI reference that implements the {@link arlut.csd.ganymede.rmi.Session} interface which is backed on the server by a client-facing {@link arlut.csd.ganymede.server.GanymedeSession} object. Each client has its own GanymedeSession object, which lives in the server for the duration of the client's connection and which is responsible for tracking security restrictions on the client and providing appropriately limited access.
Each GanymedeSession, in turn, references a unique {@link arlut.csd.ganymede.server.DBSession} object which is responsible for supporting operations on the server's single underlying {@link arlut.csd.ganymede.server.DBStore} database object.
Each DBSession contains a reference to a unique {@link arlut.csd.ganymede.server.DBEditSet} transaction manager which coordinates checkpointing, rollback, and commit for changes made by that DBSession.