2011-02-17 141 views
2

我正在使用GWT 2.1.1和客戶端 - 服務器通信使用AsyncService(而不是RequestFactory)。我有一個返回「基金」對象的對象。該基金提及一個「分銷商」對象,該對象本身有一系列「基金」對象。GWT RPC序列化和循環引用 - 雞和蛋問題

在一種情況下,我從服務器返回,基金「foo」的經銷商參考有「foo」,「bar」和「joe」資金。這是一種常見的業務場景。當在客戶端反序列化時,我得到一個錯誤,因爲分銷商基金中的「foo」引用最終沒有填充值。特別是,fund-id(字符串)沒有被填充,並且在散列碼實現中被使用。在客戶端反序列化過程中,「bar」和「joe」資金得到正確的反序列化,但是foo失敗了,即只有少數屬性被反序列化。

這裏發生的事情是,當「foo」被反序列化時,它有一些反序列化的屬性,然後gwt試圖反序列化分發者。 Foo的基金資產還沒有被反序列化。因此,當分銷商的資金集合被反序列化,遇到「foo」時,反序列化器會提供對當前沒有資金ID的反序列化「foo」的引用。因此,當GWT嘗試將其添加到分發器中的Set(HashSet)時,哈希碼實現失敗。

所以我的問題是,在這種情況下,有沒有辦法強制GWT首先序列化某些屬性(在這種情況下,hashCode依賴的基金ID)?

回答

2

發現這實際上是一個已知問題。對於誰比誰通過搜索過這個運行,並發現了這個問題:

http://code.google.com/p/google-web-toolkit/issues/detail?id=3577

我會發布關於如何一次我讀了它實現自定義的串行所以人們有一個更全面的瞭解信息。我也邀請其他人也這樣做。