Sylvain Wallez dijo: > The transient store (role Store.TRANSIENT_STORE) is used for objects > that are not serializable, or whose storage doesn't make sense across > server restart. The transient store lives on its own and has no relation > with other stores. This is a mandatory component within Cocoon (i.e. > used by Cocoon's code). > > The store (role Store.ROLE) is used to store objects that are > serializable. As the transient store, it is a mandatory component. > > Some store (Store.ROLE) implementations (but not all) may actually be > just an in-memory cache that swap objects by calling the persistent > store (Store.PERSISTENT_STORE) when needed. So transient store is an > _optional_ component which is used only by MRUMemoryStore, and _nowhere > else_ in the code. When using JISP, we had this mechanism : the store > was a MRUMemoryStore swapping to the persistent store which was a > JISPStore. > > To sum up : > - Store.TRANSIENT_STORE : used by Cocoon to store non-serializable objects > - Store.ROLE : used by Cocoon to store serializable objects > - Store.PERSISTENT_STORE : optional component that _may_ be used by > in-memory implementations of Store.ROLE to delegate persistent storage. > > AFAIU, JCS has its own in-memory front end to the persistent storage. In > this configuration Store.ROLE will be a JCSStore and > Store.PERSISTENT_STORE will have no implementation (because we don't > need it). > > But we still and will always need a TRANSIENT_STORE that doesn't require > objects to be serializable. If JCS cannot handle this, then let's keep > the current DefaultTransientStore (which extends MRUMemoryStore). > > Hope this clear things a bit. >
Thanks master! This piece is great! We need to add it to the documentation! BTW, that means we can also get rid of JISPStore, right? Best Regards, Antonio Gallardo
