GWT Atmosphere + RequestFactory

3
我希望实现以下行为:
用户在浏览器中保存某个实体。在服务器端保存实体后,它会生成通知,并且必须通过Atmosphere使用更新的实体实例通知所有其他客户端。
因此问题是如何通过Atmosphere接口推送POJO实体?最后一个支持通过线路传输Serializable类型,而RequestFactory有另一种序列化机制。
因此,我需要将POJO实体转换为自动bean,就像RF所做的那样,并发送到客户端。有人知道如何做到这一点吗?

为什么需要使用RequestFactory? - Andrejs
由于许多来源的建议 - CHEM_Eugene
1个回答

7
你可以使用创建AutoBean并在客户端代码中使用它们,而不是使用POJO。 在GWT中,AutoBeans可以轻松地序列化/反序列化为JSON,并且可以传输JSON。 这就是我在基于Web Socket的GWT应用程序中所做的。
在服务器上,您可以创建与客户端相同的AutoBean工厂。我们使用AutoBeanFactorySource而不是GWT.create:
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。

你能否写几行代码来说明如何在服务器端创建 Autobean 吗?这就是我要找的! - CHEM_Eugene
谢谢!你知道 AutoBean 中是否有嵌入机制将所有属性复制到 autobean 吗?这需要使用反射吗? - CHEM_Eugene
1
您可以通过创建并使用 factory.myData( myExistingData ); 将现有的 POJO 包装在 AutoBean 中,从而使 AutoBean 具有其属性。 - Andrejs
我可以包装一个没有实现接口的实体吗?RF是如何做到的? - CHEM_Eugene
它可以但不一定要实现接口,只需要拥有相同的 getters/setters。参见 http://code.google.com/p/google-web-toolkit/wiki/AutoBean#AutoBeanFactory - Andrejs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接