Bug 424754 - JFace resource registries cannot be serialized
Summary: JFace resource registries cannot be serialized
Status: ASSIGNED
Alias: None
Product: RAP
Classification: RT
Component: JFace (show other bugs)
Version: 2.2   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-30 12:21 EST by Anuradha G CLA
Modified: 2014-01-08 04:47 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anuradha G CLA 2013-12-30 12:21:19 EST
WARNING: Cannot serialize session attribute org.eclipse.rap.rwt.internal.service.UISessionImpl#uisession:88decbcc for session E3713B669D3DC42DB4FB21B64C2DC93F
java.io.NotSerializableException: org.eclipse.jface.resource.JFaceResources$ColorRegistryStore
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
	at java.util.HashMap.internalWriteEntries(HashMap.java:1775)
	at java.util.HashMap.writeObject(HashMap.java:1352)
	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:483)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
	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.defaultWriteFields(ObjectOutputStream.java:1548)
	at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441)
	at java.util.Collections$SynchronizedMap.writeObject(Collections.java:2751)
	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:483)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
	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.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 java.util.HashMap.internalWriteEntries(HashMap.java:1775)
	at java.util.HashMap.writeObject(HashMap.java:1352)
	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:483)
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
	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.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.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1673)
	at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1079)
	at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:432)
	at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)
	at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:518)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5622)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:744)
Comment 1 Ivan Furnadjiev CLA 2014-01-06 07:08:49 EST
JFace classes are not serializable and the exception is expected.
Comment 2 Anuradha G CLA 2014-01-07 10:45:36 EST
@Ivan any workaround suggested ?
Comment 3 Ralf Sternberg CLA 2014-01-08 04:02:27 EST
At the moment, the workaround is not to use JFace resource registries (JFaceResources.getColorRegistry() etc). We plan to look into alternatives for resources management in RAP in the next release. We should also consider to make JFace resource registries serializable if possible.
Comment 4 Ivan Furnadjiev CLA 2014-01-08 04:18:05 EST
(In reply to comment #2)
> @Ivan any workaround suggested ?
If you want to suppress the exception and you don't rely on session persistence on restart you could try to turn-off the session serialization like described here:
http://dev-answers.blogspot.com/2007/03/how-to-turn-off-tomcat-session.html
Comment 5 Anuradha G CLA 2014-01-08 04:47:22 EST
Ok thx for the workaround. We are not directly  use JFaceResources. We use TableView, ComboView etc.. 

we are more than happy to provide the patch if point out what need to change.