Почему GWT больше не может десериализовать собственный ключ хранилища данных?

У меня только началась эта проблема после обновления всех моих библиотек:

Я использовал GWT 2.4, App Engine 1.6.3 и Objectify 3.0.

Я обновился до GWT 2.5, App Engine 1.7.4 и Objectify 4.0b1.

С тех пор я получаю эту странную ошибку, что только 1 человек кажется, есть во всем Интернете!

Трассировки стека:

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

Проблема возникает при десериализации учетной записи, так как она содержит Objectify Ключ, в который встроен собственный ключ хранилища данных.

Сериализация работает нормально, и мой граф объектов в хранилище данных в порядке, я просто не могу вернуть ничего, что содержит ключ, а это почти все полезное.

Любые указатели приветствуются.


person slugmandrew    schedule 08.02.2013    source источник
comment
Очистите проект и убедитесь, что ничего не осталось из кеша или старых сгенерированных файлов. Перезапустите, перезапустите и попробуйте еще раз. Иногда это просто кэшированные значения.   -  person appbootup    schedule 08.02.2013
comment
Пробовали удалить все в папке gwt-unitCache и очистить. Кажется, ничего не работает. Политика сериализации может быть?   -  person slugmandrew    schedule 11.02.2013


Ответы (1)


У меня была такая же проблема, и кажется, что она не имеет ничего общего с хранилищем данных, потому что, когда я отправил объект на сервер и попытался получить его обратно, я все равно получил ошибку десериализации.

AsyncCallService{

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

ServiceImpl{

User createUser(User user){

DB.save(user);

return user

}

И это по-прежнему вызывает ошибки сериализации или, скорее, ошибки десериализации на клиенте.

Что я сделал, так это просто вернул нового пользователя;

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

newUser.setId(user.getId())

return newUser;

}

Проблема решена, за исключением того, что теперь я потерял некоторые «преимущества» старого стека движка приложений, где десериализация не требовалась.

person Lee    schedule 09.02.2013