java - GWT - RPC 序列化异常和 MapDB

标签 java serialization gwt mapdb

我正在使用 gwt,并且正在使用 mapdb,当我将数据检索为 map (BTreeMap) 时,gwt 会抛出 rpc 序列化异常。我将 map 包装在一个实现 SerializedIsSerialized 的对象中,但这不起作用。

我不知道为什么这不起作用,因为我阅读了mapdb的文档并且我正确地使用了它。

这就是代码:

public class WrapperObject implements Serializable, IsSerializable {

          private Map<String, List<String>> map;

          public WrapperObject() {}
          public WrapperObject(Map<String, List<String>> map) {
              this.map = map;
          }
          //GETTERS AND SETTERS
          ...
}


public class Prova {
    ....

    private DB openDB() {
        return DBMaker.shoutdownOnJvmClose().make();
    }

    ...

    public WrapperObject retrieveData() {
        DB db = this.openDB();

        Map<String, List<String>> map = 
        db.getTreeMap("values");

        return new WrapperObject(map);
    }
}

然后在客户端类中,我使用 map 创建一个包含 treeItem 的树。

感谢您的帮助。

最佳答案

问题是,Map 不是可序列化

即您的 WrapperObject 被标记为 SerializableIsSerializes, 但并非其所有成员都以这种方式标记(请参阅Map 和包装的List)。

要解决此问题,您可以将 map 的类型更改为可序列化的 Map 的实现(例如 LinkedHashMap ArrayList):

private LinkedHashMap<String, ArrayList<String>> map;

关于java - GWT - RPC 序列化异常和 MapDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021452/

相关文章:

java - Ant 的 <property> "prefix"属性的 Maven 对应项是什么?

java - 如何将文件从一台电脑复制到另一台电脑

java - 使用 jackson 在 java 中嵌套自定义反序列化

c# - 自定义 XML 序列化添加额外的属性

java - maven 和 gwt 的 Log4j 问题 : org. apache.log4j.XAppender 对象不可分配

java - 如何获取 URL 的路径

java - 如何序列化 BigDecimal 以与 jackson 映射值?

css - GWT:标签 getOffsetHeight() 值与 CSS 值不匹配

javascript - 如何做一个 GWT-Wrapper

java - 我可以将 NativeFileSystemStore 作为插件提供给 Hadoop 吗?