【问题标题】:GWT RPC SerializationExceptionGWT RPC 序列化异常
【发布时间】:2012-04-18 18:24:26
【问题描述】:

我正在尝试通过 GWT RPC (GWT 2.4) 发送对象。该对象包括一个包含以下字段的对象:

@Serialized
private Map<Class<? extends Foo>, Foo> fooMap = ImmutableMap.of(); 

Foo 定义为:

public interface Foo extends Serializable {

}

fooMap 为空时,它可以正常工作。填充后,GWT RPC 失败并显示SerializationException。 (服务器永远不会被击中。)fooMap 中唯一的 Foo 类型来自此类:

public class FooImpl implements Foo {

  private static final long serialVersionUID = 1L;

  private long bar;
  private float baz;
  private int batz;

  ... 
}

我做错了什么? FooImpl 不应该引起任何问题。每个类都有一个无参数构造函数。我不需要每个序列化对象的每个私有字段的 getter 和 setter,对吗? Class&lt;? extends Foo&gt; 有问题吗?

【问题讨论】:

  • 对象本身的定义在哪里?除了您的fooMap 之外,它是否包含任何内容?
  • 对象本身是Serializable,当fooMap 被删除或为空时可以正常工作。
  • 我倾向于查看您正在使用的 Map 实现的 GWT 序列化特征。
  • 尝试手动为 FooImpl 类创建默认构造函数。它应该可以解决您的问题。

标签: java gwt serialization gwt-rpc objectify


【解决方案1】:

Class&lt;? extends Foo&gt; 很可能是个问题。据我所知,GWT 根本不知道如何序列化-反序列化Class 实例(它的代码仅用于序列化普通对象、枚举和数组,并且没有 CustomFieldSerializer)。所以尝试使用类名而不是Class 实例。

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 2012-04-29
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多