GWT-com.google.GWT.user.client.rpc.SerializationException

GWT-com.google.GWT.user.client.rpc.SerializationException,gwt,gwt-rpc,serializable,Gwt,Gwt Rpc,Serializable,我们偶尔会遇到一些例外情况,例如: com.google.gwt.user.client.rpc.SerializationException:类型“xxx”不可分配给“com.google.gwt.user.client.rpc.IsSerializable”,并且没有自定义字段序列化程序。出于安全目的,将不会序列化此类型。示例=xxx 位于com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize

我们偶尔会遇到一些例外情况,例如:

com.google.gwt.user.client.rpc.SerializationException:类型“xxx”不可分配给“com.google.gwt.user.client.rpc.IsSerializable”,并且没有自定义字段序列化程序。出于安全目的,将不会序列化此类型。示例=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.SerializationValue(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.travicemanagerserviceinpl.processCall(travicemanagerserviceinpl.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.jaccontextvalve.invoke(jaccontextvalve.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.aprendop$Worker.run(aprendop.java:1508) 运行(Thread.java:619)

应用程序通常运行良好。指示的类实现了可序列化(整个对象图)

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

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

  • 当部署应用程序的新版本时,问题似乎会发生

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

有什么想法吗

霍尔格,你查过了吗 文章说, 它有一个带有任何访问修饰符的默认(零参数)构造函数(例如,
private Foo(){}
将起作用)


我总是忘记零参数常数。当我创建一个可序列化对象:D

时,我也遇到了一个序列化异常,但我也看到在序列化异常之前出现了这个错误:

[正常运行报告/2.34010256339350884]: 示例:错误:找不到模板 registration-confirmation.vm


找到我的速度模板是个问题。一旦我解决了这个问题,SerializationException就会停止显示,因此,如果您按照Kerem的建议仍然存在问题,请在日志中查找其他异常。

如果您在JBoss上运行,这可能是因为以前部署的应用程序在取消部署时没有被删除。要解决此问题,必须在JBoss中修改以下文件: ${JBOSS_HOME}/server/default/deployers/jbossweb.deployer/META-INF/war-deployers-JBOSS-beans.xml 并将以下属性设置为true:DeleteWorkIronContextDestroy


当以前部署的应用程序未清理时,GWT可能会对需要加载的RPC文件感到困惑,最终会出现这些序列化异常,因此RPC文件是唯一的,因为它们是由servlet加载的,并且在GWT中使用。请参阅其中的说明“此文件必须作为公共资源部署到web服务器,可通过ServletContext.getResource()从RemoteServiceServlet访问。”


是否可能新应用程序正在动态重新加载,而getResource以某种方式失败?重新启动应用程序是否解决了问题?

我遇到了相同的错误,并通过清理浏览缓存和导航历史记录来解决此问题。

我假设您正在本地主机上运行应用程序,并在托管模式下运行应用程序?如果是这样,您可能希望关注工作目录(如果您没有在tomcat服务器中运行应用程序,则关注等效目录)。检查webapp的折叠