GWT — исключение сериализации RPC и MapDB

Я использую gwt и mapdb, и когда я получаю данные в виде карты (BTreeMap), gwt выдает исключение сериализации rpc. Я завернул карту в объект, который реализует Serializable и IsSerializable, но это не работает.

Я не знаю, почему это не работает, потому что я прочитал документацию по 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);
    }
}

Затем в клиентском классе я создаю дерево с помощью treeItem, используя карту.

Спасибо за помощь.


person Peduz    schedule 04.05.2016    source источник
comment
ваш WrapperObject размещен в общем пакете? Вы пытались скомпилировать снова?   -  person Tobika    schedule 04.05.2016
comment
будет здорово, если вы поставите полную трассировку стека исключений   -  person Ajhar Shaikh    schedule 04.05.2016
comment
Вы запускаете свой код в разработке, используя режим суперразработчика. это может быть причиной   -  person nitin verma    schedule 05.05.2016


Ответы (1)


Проблема в том, что Map не Serializable.

т.е. ваш WrapperObject помечен как Serializable и IsSerializable, но не все его элементы отмечены таким образом (см. Map и завернутый List).

Чтобы решить эту проблему, вы можете изменить тип map на реализацию Map, которая сериализуема (например, LinkedHashMap с ArrayList):

private LinkedHashMap<String, ArrayList<String>> map;
person mam10eks    schedule 04.05.2016
comment
Спасибо за ваше предложение, я попробую позже. - person Peduz; 04.05.2016