【问题标题】:GWT RPC and persistent Java objectsGWT RPC 和持久性 Java 对象
【发布时间】:2010-10-07 20:39:58
【问题描述】:

首先,

非常感谢 Craig 在下面提供的出色答案,我在搜索原始问题时发现它非常有用... 参考:GWT Simple RPC use case problem : Code included

在此解决方案的基础上,如果我按照 Craig 的建议将可持久化的对象留在 /shared 文件夹中,如何克服(看似 GWT 的限制)...并 注释 按照 GWT 教程的建议...

@PersistenceCapable
public class Employee {

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

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

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

欢迎任何建议, 谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      • appengine-utils-client-1.0.jar
      • appengine-utils-server-1.0.jar

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

      使用方法:

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

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

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

      【讨论】:

      • 嗨,resmarksystems 库处理 Key、Text、ShortBlob、Blob、Link、User、PostalAddress、PhoneNumber 和 Rating。有没有办法在同一上下文(RPC、持久性 Java 对象)中处理 com.google.appengine.api.datastore.GeoPt?
      【解决方案3】:

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

      Datastore keys

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2013-05-20
          • 2014-02-19
          • 2010-12-26
          • 1970-01-01
          • 2010-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-05
          相关资源
          最近更新 更多