Unico Hommes wrote:

Carsten Ziegeler <cziegeler <at> s-und-n.de> writes:



It seems this is due to the move to JCS :(

The logicsheet is put into the cache and JCS casts this to
Serializable in org.apache.jcs.access.CacheAccess.put().

So, what do we do now...




Yes, JCS requires objects to implement Serializable (quite acceptable requirement for a cache ).


It's acceptable only for *persistent* cache, but not for transient *object* cache. Cocoon requires transient cache for it to work (Templates caching etc), while persistent cache is optional.



The same problem occurred with Pagesheet from the
Paginator transformer. I've made both Logicsheet and Pagesheet implement
Serializable. Alternatively we could let the JCSStore implementation check
whether the object to store implements Serializable and if not wrap the object
in a Serializable wrapper (at the cost of some performance).


What purpose would that serve? It will store empty wrappers on the hard drive and retrieve those empty wrappers and hand over back to Cocoon, and all kinds of failures (NullPointerExceptions) will start happening all over the place.


The only viable solution currently is rollback to Excalibur's memory cache - unless JCS becomes something which can work as in-memory object cache (with optional overflow to disk).

Vadim



Reply via email to