перезапись сервера при сериализации в GWT, но спящий режим на сервере - PullRequest
0 голосов
/ 06 марта 2012

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

import com.google.gwt.user.client.rpc.SerializationException;

import com.google.gwt.user.client.rpc.SerializationStreamReader;
import com.google.gwt.user.client.rpc.SerializationStreamWriter;

    public static void serialize(SerializationStreamWriter writer, Object instance) throws SerializationException
    public static void deserialize(SerializationStreamReader reader, Object instance) throws SerializationException

Я включил gwt.userв WEB-INF / lib, хотя я не должен, и мой сервер jboss все еще плачет

 ERROR: Failed to get SerializationPolicy

Вы пытались решить эту проблему, кто-нибудь знает, как ее исправить ... желательно без использования Gilead ... еслис Gilead есть более простое решение, пожалуйста, покажите мне, как ... Я не хочу получать доступ к объекту базы данных из клиента GWT, просто использовать один и тот же объект, который определен в shared / для клиента и сервера, но с разными сериализациями..

РЕДАКТИРОВАТЬ: И заботиться о сериализации о коллекциях Этот парень подробно

Проверка уже дана ... но я решил это решение с предоставлениемjboss-сервер явно указывает на наличие gwt.rpc, а не только для клиента apache ... чертов jboss-сервер не может их найти .. так чтоВ основном это проблема конфигурации на сервере.

1 Ответ

1 голос
/ 06 марта 2012

Я бы посмотрел на HibernateDetachUtility .Код выглядит сложным, но все, что он делает, - это детальное сканирование графов объектов и сводит на нет все, что не сериализуемо GWT.

Я использую его в своем приложении, и он прекрасно работает (думаю, вы можете столкнуться с проблемами, если выиметь большие графы объектов для отделения).Все, что я добавил, - это поиск пакета в fieldValue, чтобы увидеть, относится ли он к типу одного из моих объектов модели (которые находятся в одном пакете), чтобы также отделить значение от hibernate.Посмотрите на условие в строке 505-506-507 (fieldValue.getClass().getName().contains("org.rhq") должно быть заменено условием, которое может соответствовать объектам вашей спящей модели)

Чтобы вызвать утилиту, просто вызовите ее так:

// Before returning your response, invoke the next line on your object
HibernateDetachUtility.nullOutUninitializedFields(your_object_here, SerializationType.SERIALIZATION);
// Your object is now safe to be returned to the GWT client
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...