2012-03-26 2 views
3

Я хотел бы привести следующее поведение:GWT Atmosphere + RequestFactory

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

Так что проблема как я могу подтолкнуть объект POJO через интерфейс Атмосферы? Последняя поддерживает типы Serializable для передачи по проводам, тогда как RequestFactory имеет другой механизм сериализации.

Так что мне нужно преобразовать объект POJO в autobean, поскольку это делается RF и отправляет клиенту. Кто-нибудь знает, как это можно сделать?

+0

Почему вы должны использовать RequestFactory? – Andrejs

+0

Из-за совета многих источников) –

ответ

7

Вы можете просто использовать создание AutoBeans и использовать их вместо POJO в своем клиентском коде. AutoBeans можно легко сериализовать в/из JSON в GWT, а JSON можно перенести. Вот что я делаю в своем приложении GWT, основанном на веб-сокетах.

На сервере вы можете создать тот же завод AutoBean, который вы используете на клиенте. Вместо GWT.create мы используем AutoBeanFactorySource:

MyDataFactory factory = AutoBeanFactorySource.create(MyDataFactory.class) 
AutoBean<MyData> myDataAutoBean = factory.myData(); 
MyData data = myDataAutoBean.as(); 
data.setValue(1); // call all kinds of setters 

// to converto AutoBean to JSON 
String json = AutoBeanCodex.encode(myDataAutoBean).getPayload(); 

На стороне клиента мы используем AutoBeanCodex для декодирования JSON в AutoBean

+0

Не могли бы вы написать несколько строк кода, как создать autobean на стороне сервера? Это то, что я ищу! –

+0

См. Мой отредактированный ответ, например, код – Andrejs

+0

Спасибо! Вы знаете, есть встроенный механизм в AutoBean для копирования всех свойств в autobean? Вы используете отражение для этого? –

Смежные вопросы