GWT - 偶尔出现 com.google.gwt.user.client.rpc.SerializationException [英] GWT - occasional com.google.gwt.user.client.rpc.SerializationException

查看:20
本文介绍了GWT - 偶尔出现 com.google.gwt.user.client.rpc.SerializationException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

偶尔发生的异常困扰着我们,例如:

we are haunted by occasional occurences of exceptions such as:

com.google.gwt.user.client.rpc.SerializationException:类型xxx"无法分配给com.google.gwt.user.client.rpc.IsSerializable"并且没有自定义字段序列化程序.For出于安全目的,这种类型不会被序列化.: instance = xxx在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610)在 com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)在 com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:609)在 com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467)在 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:564)在 com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)在 de.softconex.travicemanager.server.TraviceManagerServiceImpl.processCall(TraviceManagerServiceImpl.java:615)在 com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)在 com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:710)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)在 org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)在 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)在 org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)在 org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378)在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)在 java.lang.Thread.run(Thread.java:619)

com.google.gwt.user.client.rpc.SerializationException: Type 'xxx' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer.For security purposes, this type will not be serialized.: instance = xxx at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534) at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:609) at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:564) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188) at de.softconex.travicemanager.server.TraviceManagerServiceImpl.processCall(TraviceManagerServiceImpl.java:615) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) at java.lang.Thread.run(Thread.java:619)

应用程序正常运行.指定的类实现了 Serializable(整个对象图).

The application is normally running fine. The indicated class implements Serializable (the whole object graph).

到目前为止,唯一的模式/观察是:

So far the only patterns / observations are:

  • 我们似乎只有在 iframe 内使用应用程序时才会出现问题

  • we seem to have the issue only when the application is used inside an iframe

部署新版本的应用程序时似乎会出现问题

the problem seems to happen when a new version of the application has been deployed

在隐私模式下运行 firefox(禁用所有缓存等)并不能解决问题

running firefox in privacy mode (disabling all caches etc.) doesn't fix the problem

有什么想法吗?

霍尔格

推荐答案

您是否检查了 http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html#serialize文章说:它有一个带有任何访问修饰符的默认(零参数)构造函数(例如 private Foo(){} 将工作)

did you check http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html#serialize the article says: It has a default (zero argument) constructor with any access modifier (e.g. private Foo(){} will work)

我总是忘记 zeroargument const.当我制作一个可序列化的对象时:D

I'm allways forgetting zeroargument const. when I am making a serializable object :D

这篇关于GWT - 偶尔出现 com.google.gwt.user.client.rpc.SerializationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆