Почему вы пытаетесь сериализовать РЧ-сообщения и отправлять их как сущности? RequestFactory - это гораздо больше, чем просто способ отправки данных по сети - в нем есть как минимум три разных типа сообщений, которые можно отправлять с клиента на сервер: создавать экземпляры, устанавливать вызовы и вызывать методы обслуживания. В зависимости от того, что происходит на сервере, клиенту могут быть возвращены не только данные, но и сообщения о том, какие изменения были внесены, и если эти установщики внесли изменения, которые недопустимы в соответствии с правилами JSR303.
Вы пытаетесь использовать более простой интерфейс для описания, отправки и получения сущностей? Или вы действительно хотите, чтобы RF-соединение проводилось как на клиенте, так и на сервере, чтобы вы могли выполнять пакетные запросы, обращаться к экземплярам EntityProxyId и получать от клиента только отправку различий?
Если вам просто нужны более простые объявления объектов, попробуйте просто использовать AutoBean
s и AutoBeadCodex
, которые вы уже рассмотрели - вы сможете легко создавать и маршалировать экземпляры как на клиенте, так и на сервере, и вы можете передавать они как струны по транспортам атмосферы.
Если вы действительно хотите RequestFactory, но работаете с чем-то другим, кроме AJAX, есть другие варианты. Вместо того, чтобы отправлять / получать строки через Atmosphere (который, как я считаю, предназначен для обеспечения push-поддержки вызовов RPC), рассмотрите возможность использования этого базового push-уровня для реализации нового транспорта запросов в RequestFactory.
com.google.web.bindery.requestfactory.shared.RequestTransport
может быть реализовано (см. com.google.web.bindery.requestfactory.gwt.client.DefaultRequestTransport
для версии AJAX по умолчанию), чтобы использовать любой механизм связи, который вы хотели бы - и для построения сервера, посмотрите на com.google.web.bindery.requestfactory.server.RequestFactoryServlet
, что на самом деле нужно сделать, чтобы подтолкнуть сообщения через локатор, ServiceLocators и т. д.
Если вы действительно хотите использовать Atmosphere и RF, подумайте о создании RequestTransport
, который обернет простой интерфейс Atmosphere для вызова на сервер со строкой - вызовы cometd / websocket уже позаботятся о вас, и вам просто нужно будет перевести строковое сообщение в вызовы (снова посмотрите, как это делает RequestFactoryServlet).