2013-02-08 58 views
1

我只是開始有這個問題升級了我所有的庫:爲什麼GWT不能反序列化本地數據存儲區密鑰?

我使用的是GWT 2.4,App Engine 1.6.3和Objectify 3.0。

我升級到GWT 2.5,App Engine 1.7.4和Objectify 4.0b1。

從那時起我得到這個奇怪的錯誤,only 1 other person似乎在整個互聯網上!

堆棧跟蹤:

Caused by: com.google.gwt.user.client.rpc.SerializationException: com.google.appengine.api.datastore.Key/1349195865 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:153) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:114) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.googlecode.objectify.Key_FieldSerializer.deserialize(Key_FieldSerializer.java:11) 
    at com.googlecode.objectify.Key_FieldSerializer.deserial(Key_FieldSerializer.java:29) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.deserialize(Collection_CustomFieldSerializerBase.java:34) 
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.deserialize(ArrayList_CustomFieldSerializer.java:34) 
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_FieldSerializer.deserial(ArrayList_FieldSerializer.java:19) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.utilitiessavings.testapp2.shared.Account_FieldSerializer.deserialize(Account_FieldSerializer.java:29) 
    at com.utilitiessavings.testapp2.shared.Account_FieldSerializer.deserial(Account_FieldSerializer.java:51) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.deserialize(Collection_CustomFieldSerializerBase.java:34) 
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.deserialize(ArrayList_CustomFieldSerializer.java:34) 
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_FieldSerializer.deserial(ArrayList_FieldSerializer.java:19) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.utilitiessavings.testapp2.client.action.GetAccountsResult_FieldSerializer.deserialize(GetAccountsResult_FieldSerializer.java:20) 
    at com.utilitiessavings.testapp2.client.action.GetAccountsResult_FieldSerializer.deserial(GetAccountsResult_FieldSerializer.java:38) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:398) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter$ResponseReader$8.read(RequestCallbackAdapter.java:106) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:214) 
    ... 27 more 

反序列化時,帳戶,因爲它包含一個物化Key包裝了原生datastore key的問題正在發生。

序列化工作正常,我的對象圖在數據存儲中都很好,我只是無法得到任何包含Key的東西,這幾乎是一切有用的東西。

任何指針讚賞。

+0

項目清理並確保沒有任何內容來自緩存或舊生成的文件被遺留。重新啓動,重新啓動並重試。有時它只是緩存的值。 – SSR 2013-02-08 18:07:13

+0

已嘗試刪除gwt-unitCache文件夾中的所有內容,並進行清理。似乎沒有任何工作。序列化策略可能? – slugmandrew 2013-02-11 16:35:40

回答

0

我有這個相同的問題,似乎它與數據存儲沒有任何關係,因爲當我發送一個對象到服務器,並試圖檢索它,我仍然有一個反序列化錯誤。

AsyncCallService{ 

void createUser(User user, AsyncCallback<User> user); 
} 

ServiceImpl{ 

User createUser(User user){ 

DB.save(user); 

return user 

} 

而這仍然導致序列化錯誤或更確切地說是客戶端上的deserializaton錯誤。

我所做的只是傳回一位新用戶;

User createUser(User user){ 
DB.save(user); 
User newUser = new User(); 

newUser.setId(user.getId()) 

return newUser; 

}

問題解決了,只是現在我已經失去了一些舊的應用程序引擎堆棧的「好處」,其中反序列化是沒有必要的。