You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-users@jakarta.apache.org by "Zabel, Ian" <IZ...@cirqit.com> on 2005/08/31 23:11:39 UTC

Serializing question about JCS in a Lateral Cache config

We have figured out through trial and error that all objects put into the
JCS cache must implement Serializable. 

But, we are receiving a few odd Serialization exceptions that are confusing.
They seem to be related to the lateral cache trying to send our objects to
the other servers in the cluster. Note: We do not have that feature enabled,
as far as I can tell (see cache.ccf at the end of this message).

So, in my understanding of the lateral cache, the only broadcasts should be
the keys that have been removed or updated. This is our desired behavior.
The cache should not be serializing our objects and sending them across the
cluster.

The only objects we are putting into the cache are CqtRFQEstimateCollector
and CqtEstimateEvent (both are Serializable). The objects mentioned in these
stacktraces (CqtRFQSpecQuote, CqtSupplierQuoteKey and ItcMoney) are objects
that are held within the CqtRFQEstimateCollector object, and are not
Serializable. These exceptions do not make sense to me, since JCS shouldn't
even be trying to serialize these objects. Before I go ahead and start
modifying more objects, I just wanted to make sure I'm doing things right.

Thanks,
Ian.

Here are the exceptions we are repeatedly receiving:

ERROR [Thread-83] (LateralTCPListener.java:477) - Unexpected exception.
java.io.WriteAbortedException: writing aborted;
java.io.NotSerializableException: com.cirqit.core.quotes.CqtRFQSpecQuote
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1303)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener$ConnectionHan
dler.run(LateralTCPListener.java:444)
	at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.ja
va:727)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.NotSerializableException:
com.cirqit.core.quotes.CqtRFQSpecQuote
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.send(LateralTCP
Sender.java:196)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.update(Lateral
TCPService.java:114)
	at
org.apache.jcs.auxiliary.lateral.LateralCache.update(LateralCache.java:93)
	at
org.apache.jcs.engine.CacheAdaptor.handlePut(CacheAdaptor.java:86)
	at
org.apache.jcs.engine.CacheEventQueue$PutEvent.doRun(CacheEventQueue.java:65
2)
	at
org.apache.jcs.engine.CacheEventQueue$AbstractCacheEvent.run(CacheEventQueue
.java:567)
	at
org.apache.jcs.engine.CacheEventQueue$QProcessor.run(CacheEventQueue.java:53
7)
ERROR [Thread-80] (LateralTCPListener.java:477) - Unexpected exception.
java.io.WriteAbortedException: writing aborted;
java.io.NotSerializableException: com.cirqit.core.quotes.CqtRFQSpecQuote
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1303)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener$ConnectionHan
dler.run(LateralTCPListener.java:444)
	at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.ja
va:732)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.NotSerializableException:
com.cirqit.core.quotes.CqtRFQSpecQuote
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.send(LateralTCP
Sender.java:196)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.update(Lateral
TCPService.java:114)
	at
org.apache.jcs.auxiliary.lateral.LateralCache.update(LateralCache.java:93)
	at
org.apache.jcs.engine.CacheAdaptor.handlePut(CacheAdaptor.java:86)
	at
org.apache.jcs.engine.CacheEventQueue$PutEvent.doRun(CacheEventQueue.java:65
2)
	at
org.apache.jcs.engine.CacheEventQueue$AbstractCacheEvent.run(CacheEventQueue
.java:567)
	at
org.apache.jcs.engine.CacheEventQueue$QProcessor.run(CacheEventQueue.java:53
7)

DEBUG [Thread-77] (LateralTCPListener.java:236) - handleRemove>
cacheName=CqtRFQEstimateCollector, key=61103-1
ERROR [Thread-77] (LateralTCPListener.java:477) - Unexpected exception.
java.io.WriteAbortedException: writing aborted;
java.io.NotSerializableException: com.itc.util.ItcMoney
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1303)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener$ConnectionHan
dler.run(LateralTCPListener.java:444)
	at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.ja
va:727)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.NotSerializableException: com.itc.util.ItcMoney
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at java.util.LinkedList.writeObject(LinkedList.java:755)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
	at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
	at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
	at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPSender.send(LateralTCP
Sender.java:200)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService.update(Lateral
TCPService.java:105)
	at
org.apache.jcs.auxiliary.lateral.LateralCache.update(LateralCache.java:93)
	at
org.apache.jcs.engine.CacheAdaptor.handlePut(CacheAdaptor.java:86)
	at
org.apache.jcs.engine.CacheEventQueue$PutEvent.doRun(CacheEventQueue.java:65
2)
	at
org.apache.jcs.engine.CacheEventQueue$AbstractCacheEvent.run(CacheEventQueue
.java:567)
	at
org.apache.jcs.engine.CacheEventQueue$QProcessor.run(CacheEventQueue.java:53
7)



DEBUG [Thread-77] (LateralTCPListener.java:210) - handlePut>
cacheName=CqtEstimateEvent, key=61103-1
ERROR [Thread-72] (LateralTCPListener.java:477) - Unexpected exception.
java.lang.ClassCastException: cannot assign instance of
com.cirqit.core.quotes.CqtSupplierQuoteKey to field
com.cirqit.core.estimates.CqtEstimateEvent.status of type
com.cirqit.core.headers.CqtStatus in instance of
com.cirqit.core.estimates.CqtEstimateEvent
	at
java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass
.java:1977)
	at
java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1157)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1918)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at java.util.LinkedList.readObject(LinkedList.java:776)
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
	at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
	at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at
org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener$ConnectionHan
dler.run(LateralTCPListener.java:444)
	at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.ja
va:732)
	at java.lang.Thread.run(Thread.java:595)





Cache.ccf:

# DEFAULT CACHE REGION

jcs.default=LTCP
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru
.LRUMemoryCache

# PRE-DEFINED CACHE REGIONS

jcs.region.CqtRFQEstimateCollector=LTCP
jcs.region.CqtRFQEstimateCollector.cacheattributes=org.apache.jcs.engine.Com
positeCacheAttributes
jcs.region.CqtRFQEstimateCollector.cacheattributes.MaxObjects=500
jcs.region.CqtRFQEstimateCollector.cacheattributes.MemoryCacheName=org.apach
e.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.CqtRFQEstimateCollector.cacheattributes.UseMemoryShrinker=true
jcs.region.CqtRFQEstimateCollector.cacheattributes.MaxMemoryIdleTimeSeconds=
3600
jcs.region.CqtRFQEstimateCollector.cacheattributes.ShrinkerIntervalSeconds=6
0
jcs.region.CqtRFQEstimateCollector.cacheattributes.MaxSpoolPerRun=250
jcs.region.CqtRFQEstimateCollector.elementattributes=org.apache.jcs.engine.E
lementAttributes
jcs.region.CqtRFQEstimateCollector.elementattributes.IsEternal=false

jcs.region.CqtEstimateEvent=LTCP
jcs.region.CqtEstimateEvent.cacheattributes=org.apache.jcs.engine.CompositeC
acheAttributes
jcs.region.CqtEstimateEvent.cacheattributes.MaxObjects=500
jcs.region.CqtEstimateEvent.cacheattributes.MemoryCacheName=org.apache.jcs.e
ngine.memory.lru.LRUMemoryCache
jcs.region.CqtEstimateEvent.cacheattributes.UseMemoryShrinker=true
jcs.region.CqtEstimateEvent.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.CqtEstimateEvent.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.CqtEstimateEvent.cacheattributes.MaxSpoolPerRun=250
jcs.region.CqtEstimateEvent.elementattributes=org.apache.jcs.engine.ElementA
ttributes
jcs.region.CqtEstimateEvent.elementattributes.IsEternal=false

# AVAILABLE AUXILIARY CACHES

#jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFact
ory
#jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDi
skCacheAttributes
#jcs.auxiliary.DC.attributes.DiskPath=g:/dev/jcs/raf
#jcs.auxiliary.DC.attributes.maxKeySize=100000

jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.LateralCacheFactory
jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheA
ttributes
jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP
jcs.auxiliary.LTCP.attributes.TcpListenerPort=1118
jcs.auxiliary.LTCP.attributes.PutOnlyMode=true
jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.8
jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780
jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true

Re: Serializing question about JCS in a Lateral Cache config

Posted by Mitch Gorman <go...@sportsline.com>.
> The only objects we are putting into the cache are 
> CqtRFQEstimateCollector
> and CqtEstimateEvent (both are Serializable). The objects mentioned in 
> these
> stacktraces (CqtRFQSpecQuote, CqtSupplierQuoteKey and ItcMoney) are 
> objects
> that are held within the CqtRFQEstimateCollector object, and are not
> Serializable. These exceptions do not make sense to me, since JCS 
> shouldn't
> even be trying to serialize these objects. Before I go ahead and start
> modifying more objects, I just wanted to make sure I'm doing things 
> right.
>

    If you declare an object as serializable, but it contains objects 
that are not serializable, you have to declare those objects transient. 

    transient CqtRFQSpecQuote specQuote = new CqtRFQSpecQuote("that's a 
godawful class name!");

    Then no attempt will be made to serialize those members of the 
CqtRFQEstimateCollector or CqtEstimateEvent classes, when they're 
serialized.  Obviously, then, they'd be null, when they're pulled out of 
the cache.  So, one way or another, you'll have to account for them:  
either make them (and any non-serializable objects *they* contain) 
serializable, or go through all the rest of your code making sure it 
won't NPE all over the place, when it uses an instance that's been cached.