-
FEATURED COMPONENTS
First time here? Check out the FAQ!
My app is clustering with two tomcat instance, I see many java.io.NotSerializableException: org.zkoss.bind.tracker.impl.BindUiLifeCycle
ZK supports clustering, BindUiLifeCycle is a ZK class, but why I have this exception?
Any comments will be appreciated, many thanks.
23-Oct-2018 11:26:29.047 WARNING [msm-storage-thread-1] de.javakaffee.web.msm.JavaSerializationTranscoder.writeAttributes Cannot serialize session attribute [javax.zkoss.zk.ui.Session] for session [4563FA27DD4B3DC33F8983A4C44F9A0B.app1]
java.io.NotSerializableException: org.zkoss.bind.tracker.impl.BindUiLifeCycle
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.zkoss.zk.ui.EventListenerInfo.write(EventListenerInfo.java:68)
at org.zkoss.zk.ui.AbstractComponent.writeObject(AbstractComponent.java:3308)
at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.zkoss.zk.ui.AbstractComponent.writeObject(AbstractComponent.java:3287)
at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
...
...
at org.zkoss.zk.ui.http.SimpleSession.writeThis(SimpleSession.java:433)
at org.zkoss.zk.ui.http.SerializableSession.writeObject(SerializableSession.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at de.javakaffee.web.msm.JavaSerializationTranscoder.writeAttributes(JavaSerializationTranscoder.java:139)
at de.javakaffee.web.msm.JavaSerializationTranscoder.serializeAttributes(JavaSerializationTranscoder.java:100)
at de.javakaffee.web.msm.TranscoderService.serializeAttributes(TranscoderService.java:151)
at de.javakaffee.web.msm.BackupSessionTask.serializeAttributes(BackupSessionTask.java:179)
at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:109)
at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:50)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
java.io.NotSerializableException can occur when you serialize an inner class instance because serializing such an inner class instance will result in serialization of its associated outer class instance as well. How to solve it?
If the class is 3rd party, but you don't need it in the serialized form, mark the field as transient
It is important to note that Serialization of inner classes (i.e., nested classes that are not static member classes), including local and anonymous classes, is strongly discouraged.
Asked: 2018-10-23 18:05:52 +0800
Seen: 13 times
Last updated: Dec 04 '20