Hi!
Okay, for the WebDAVSource, or any Inspectable and Traverseable source, you
will get an InspectableTraversableCachingSource from the CachingSourceFactory.
This source will actually put SourceProperty objects in a map for its cached
response. The cached response is Serializable, but not the elements in that
map, so ObjectOutputStream.writeObject() fails. This only happens when the
in-memory part of the Cache which uses the EHDefaultStore becomes too full and
loads objects off to disk.
Here is the exception we get:
2006-02-28 12:03:57,173 ERROR net.sf.ehcache.store.DiskStore
cocoon-ehcache-1Cache: Could not write elements to disk cache
java.io.NotSerializableException:
org.apache.cocoon.components.source.helpers.SourceProperty
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at java.util.HashMap.writeObject(HashMap.java:980)
at sun.reflect.GeneratedMethodAccessor789.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at net.sf.ehcache.store.DiskStore.flushSpool(DiskStore.java:515)
at net.sf.ehcache.store.DiskStore.spoolThreadMain(DiskStore.java:488)
at net.sf.ehcache.store.DiskStore.access$600(DiskStore.java:89)
at net.sf.ehcache.store.DiskStore$SpoolThread.run(DiskStore.java:755)
max
> -----Original Message-----
> From: Jean-Baptiste Quenot [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 02, 2006 16:59
> To: [email protected]
> Subject: Re: repository block
>
>
> * Max Pfingsthorn:
>
> > I want to refactor the repository block so that SourceProperty
> > is an interface. Or at least implement readObject() and
> > writeObject(), so it can be serialized. SourceProperty not
> > being Serializable makes the WebDAVSource (and any other
> > which implements InspectableSource) not cacheable via the
> > CachingSourceFactory from the scratchpad.
>
> Hello Max,
>
> Does CachingSourceFactory give an error? How do you observe that
> WebDAVSource is not cacheable?
> --
> Jean-Baptiste Quenot
> http://caraldi.com/jbq/
>