2016-05-04 8 views
0

私はgwtを使用していますが、マップ(BTreeMap)としてデータを取得すると、rpcの直列化例外がスローされます。私はSerializableIsSerializableを実装するオブジェクトにマップをラップしましたが、それは動作しません。GWT - RPCのシリアル化例外とMapDB

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); 
    } 
} 

次に、クライアントクラスで私はマップを使用してツリー項目とツリーを作成します。

ありがとうございました。

+0

あなた 'WrapperObject'が共有パッケージに割り当てられていますか?あなたは再びコンパイルしようとしましたか? – Tobika

+0

完全な例外スタックトレースを入れればそれは素晴らしいでしょう。 – Ajax

+0

開発中にスーパーデモモードを使用してコードを実行していますか?これが原因である可能性があります –

答えて

1

問題は、MapSerializableではありません。

I.e.​​はSerializableIsSerializable、 とマークされていますが、そのメンバーのすべてがその方法でマークされているわけではありません(MapおよびラップされたListを参照)。あなたは、シリアライズ(例えばLinkedHashMapArrayListと)であるMapの実装にmapの種類を変えることができる、この問題を解決するために

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

あなたの提案をありがとう、私は後で試してみます。 – Peduz