GWT RPC 和持久性 Java 对象
Posted
技术标签:
【中文标题】GWT RPC 和持久性 Java 对象【英文标题】:GWT RPC and persistent Java objects 【发布时间】: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?
我见过一些丑陋的黑客......但没有什么优雅的。
欢迎任何建议, 谢谢
【问题讨论】:
【参考方案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
【讨论】:
以上是关于GWT RPC 和持久性 Java 对象的主要内容,如果未能解决你的问题,请参考以下文章
尝试以下发现的实现后,没有可用于“myDB”的持久性提供程序