Resin's implementation of the JNDI
Context. The actual storage of the persistent data is in the
AbstractModel.
The ContextImpl is just a Visitor around the AbstractModel which also encapsulate the JNDI environment.
In JNDI, each Context is a <model, env> pair. Each client might pass a different environment to the InitialContext so each ContextImpl must be unique for each client. (Granted, this is a bit wasteful of space which is why JNDI values should be cached.)
Applications which want a different model can still use ContextImpl and specify the root object for AbstractModel. ContextImpl will take care of the JNDI API for the model.