3
votes

If client side code changes we can refresh the page to recompile it and see the results. It worked nice with GWT 2.4

As of GWT 2.5 there is a problem. Upon page refreshing a com.google.gwt.user.client.rpc.SerializationException is thrown. If I restart the web application and refresh the page everything goes fine. So it seems to be some bug in GWT.

A few details:

  1. This exception is thrown if anything is changed, for example css file (!)
  2. This exception is thrown often but not always, sometimes it is OK.
  3. Actual exception may concern almost any class. In this example it is java.lang.Integer.

com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: The response could not be deserialized at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:221) at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) at java.lang.Thread.run(Unknown Source) Caused by: com.google.gwt.user.client.rpc.SerializationException: java.lang.RuntimeException: Unable to find class com.google.gwt.user.client.rpc.core.java.lang.Integer_FieldSerializer at com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:164) at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:114) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at ru.minogin.data.shared.model.BaseEntity_FieldSerializer.deserialize(BaseEntity_FieldSerializer.java:29) at ru.minogin.data.shared.model.OrderedEntity_FieldSerializer.deserialize(OrderedEntity_FieldSerializer.java:22) at ru.pickbook.shared.model.Format_FieldSerializer.deserialize(Format_FieldSerializer.java:133) at ru.pickbook.shared.model.Format_FieldSerializer.deserial(Format_FieldSerializer.java:163) at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at ru.pickbook.shared.model.Album_FieldSerializer.deserialize(Album_FieldSerializer.java:105) at ru.pickbook.shared.model.Album_FieldSerializer.deserial(Album_FieldSerializer.java:141) at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at ru.pickbook.shared.model.OrderItem_FieldSerializer.deserialize(OrderItem_FieldSerializer.java:48) at ru.pickbook.shared.model.OrderItem_FieldSerializer.deserial(OrderItem_FieldSerializer.java:75) at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.deserialize(Collection_CustomFieldSerializerBase.java:34) at com.google.gwt.user.client.rpc.core.java.util.HashSet_CustomFieldSerializer.deserialize(HashSet_CustomFieldSerializer.java:34) at com.google.gwt.user.client.rpc.core.java.util.HashSet_FieldSerializer.deserial(HashSet_FieldSerializer.java:19) at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at ru.pickbook.shared.model.Order_FieldSerializer.deserialize(Order_FieldSerializer.java:152) at ru.pickbook.shared.model.Order_FieldSerializer.deserial(Order_FieldSerializer.java:196) at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter$ResponseReader$8.read(RequestCallbackAdapter.java:106) at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:214) ... 28 more Caused by: java.lang.RuntimeException: Unable to find class com.google.gwt.user.client.rpc.core.java.lang.Integer_FieldSerializer at com.google.gwt.user.client.rpc.impl.ReflectionHelper.loadClass(ReflectionHelper.java:93) at com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:160) ... 61 more Caused by: java.lang.ClassNotFoundException at com.google.gwt.dev.shell.CompilingClassLoader$MultiParentClassLoader.findClass(CompilingClassLoader.java:368) at com.google.gwt.dev.shell.CompilingClassLoader$MultiParentClassLoader.loadClass(CompilingClassLoader.java:388) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.google.gwt.user.client.rpc.impl.ReflectionHelper.loadClass(ReflectionHelper.java:91) ... 62 more

2
FYI, problem already reported here groups.google.com/d/topic/google-web-toolkit/LE_TSOkGpVk/… but no one replied. I don't use RPC so I can't help. - Thomas Broyer

2 Answers

4
votes
-Dgwt.disableGeneratorResultCaching
0
votes

The bug is not in the GWT framework, but in the browser plugins. It shouldn't happen in production mode.

If possible, switch to SuperDev Mode, you will get rid of the exceptions.