GWT RPC和持久Java对象

时间:2010-10-07 20:39:58

标签: gwt google-cloud-datastore gwt-rpc

首先,

非常感谢克雷格在下面的优秀答案,我发现在搜索原始问题时非常有用...... 参考:GWT Simple RPC use case problem : Code included

在此解决方案的基础上,如何将我的可持久对象留在 / shared 文件夹中,克劳格建议......以及注释它作为GWT教程建议...

@PersistenceCapable
public class Employee {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

GWT似乎无法在客户端处理/导入com.google.appengine.datastore.key?

我见过一些丑陋的黑客......但没有什么优雅的。

欢迎任何建议, 感谢

4 个答案:

答案 0 :(得分:3)

不幸的是,App Engine的Key类(和其他类) GWT兼容。这意味着您必须从数据存储中检索对象,然后将其转换为与GWT兼容的POJO,以通过GWT-RPC发送到客户端。

我建议使用App Engine的objectify框架。它不仅是一个更简单的数据存储区接口,而且它使用的持久对象 GWT兼容,因此您可以通过GWT-RPC将它们发送给您的客户端。

答案 1 :(得分:2)

您可以通过添加这些额外的jar文件来使用GWT代码中的Key类:

http://www.resmarksystems.com/code/

  • 应用服务引擎-utils的客户端-1.0.jar
  • 应用服务引擎-utils的服务器-1.0.jar

这基本上为GWT编译器提供了一个GWT友好版本的Key和其他AppEngine类。 (如Text,Blob和User ..)

使用:

  • 在构建路径中的任何位置添加appengine-utils-client-1.0.jar。
  • 将appengine-utils-server-1.0.jar放入WEB-INF / lib文件夹。

在您的GWT模块中添加以下内容:

<inherits name="com.resmarksystems.AppEngineDataTypes"/>

答案 2 :(得分:0)

如果您不需要Key对象,那么您的密钥可以是Long或String,它们很容易序列化,因此可以使用标准的GWT-RPC。

Datastore keys

答案 3 :(得分:0)

我认为Google刚刚发布了一个名为requestfactory的GWT库,用于此用例。 This is the link