1

我试图让一个应用程序运行,它应该通过 RPC(Google DataStore 中的 JDO)与服务器交互。因此,我在服务器端定义了一个持久 POJO,以通过 PersistenceManager 将其放入数据存储区(如 gwt rpc tuts 所示)。一切正常。但我无法在客户端接收回调 POJO,因为 POJO 仅在服务器端定义。我怎么能意识到,客户知道那种对象?(对不起我的英语不好)拉斯

4

2 回答 2

4

将 POJO 放在单独的包/目录中(例如 com.example.common),然后将源声明添加到 GWT 模块描述符(xyz.gwt.xml):

<source path="common"/> //relative to your xyz.gwt.xml location 

然后,GWT 编译器还将编译 POJO,您的其他 GWT 代码将看到它们。

编辑:@Lars - 现在我明白你的问题了。如我所见,您有几种选择:

  1. 如果可能,请使用 Objectify 而不是 JDO。Objectify 使用纯 POJO,它们与 GWT 配合得很好。我在我的项目中使用它。Objectify 为您提供的一件好事是 @PostLoad 和 @PrePersist 在 POJO 加载/保存到数据存储之前/之后运行一些代码的方法。例如,我用它来处理 GeoPoint 的序列化。

  2. 使用 JDO 并复制您的域类。这是一种痛苦,但它会起作用。在您的服务器 JDO 类中使用“transient”java 关键字来排除您不想 RPC 的字段。

编辑#2:您可能更喜欢第三种选择:

  1. 使用超级采购创建“假”JDO 注释类。这是用 GWT 版本替换类的常用技术。此处描述:http: //fredsa.allen-sauer.com/2009/04/1st-look-at-app-engine-using-jdo.html
于 2010-10-21T22:11:16.890 回答
0

您可以使用 DTO( stackoverflow , moar ) 将数据传输到客户端。此处的基本示例(getTenLatestEntries()您的情况下的方法)。或者你可以使用一些第三方库,比如objectify,不用担心制作DTO。

于 2010-10-21T21:00:23.423 回答