The Geronimo Clustering implementation.
Basically it works like this...
A Geronimo instance has N Cluster instances.
A Cluster instance has N Node instances.
A Node instance has N Tier instances (each of a different
type - e.g. web/ejb/jndi/etc.).
Each Tier instance is responsible for connecting Application
state, of a corresponding type, to the Cluster's Data Collection
.
Clusters, Nodes and Tiers are statically described in a
descriptor (clustering-service.xml) that is deployed in the
Geronimo instance.
Other types, more closely bound to the Application arena
(e.g. HttpSessionManager) are created dynamically as and when
required and hooked to a corresponding Tier Object as described
above.
Messages may travel to and from these types, via their Cluster.
Clusters map onto backends that are capable of transporting
these messages between JVMs, hence this collection of types
forms the backbone of Geronimo's distributed architecture.
All of these types are MBeans, so will register with Geronimo's
JMX Agent and export interfaces to it that allow useful
information about their internal state to be read and possible
written by JMX Clients.