7.3.2. Commands and Visitors
Internally, JBoss Cache uses a command/visitor pattern to execute API calls. Whenever a method is called on the cache interface, the
CacheInvocationDelegate
, which implements the Cache
interface, creates an instance of VisitableCommand
and dispatches this command up a chain of interceptors. Interceptors, which implement the Visitor
interface, are able to handle VisitableCommand
s they are interested in, and add behavior to the command.
Each command contains all knowledge of the command being executed such as parameters used and processing behavior, encapsulated in a
process()
method. For example, the RemoveNodeCommand
is created and passed up the interceptor chain when Cache.removeNode()
is called, and RemoveNodeCommand.process()
has the necessary knowledge of how to remove a node from the data structure.
In addition to being visitable, commands are also replicable. The JBoss Cache marshalers know how to efficiently marshal commands and invoke them on remote cache instances using an internal RPC mechanism based on JGroups.