【问题标题】:Google App Engine HRD not working in Eclipse development environmentGoogle App Engine HRD 在 Eclipse 开发环境中不起作用
【发布时间】:2012-05-04 16:55:41
【问题描述】:

我花了最后一天半的时间在网上搜索答案,任何帮助都会很棒。

问题是我们如何让谷歌应用引擎高复制数据存储 (HRD) 在我们的本地环境中工作,以便我们使用/测试跨组事务?

我们正在开发一个新的 Java 应用程序以在 GAE 上运行。我们从使用 Eclipse 的 1.6.0 版本的 Google sdk 开始。我们选择 High Replication Datastore 设置。我们不使用 1.6.5。 我们正在使用 Objectify。

我最近注意到,Google 和 Objectify 都完全支持跨组 (XG) 交易,但有限制。

我修改了部分代码以确保它对我们有用,但遇到了问题。 当我运行 junit 测试或将我们的应用程序作为 Web 应用程序运行时,它会给出错误:

警告:java.lang.IllegalArgumentException:无法在单个事务中对多个实体组进行操作。

当我运行这段代码时:

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();

System.out.println(ds.getDatastoreAttributes().getDatastoreType());

我得到 MASTER_SLAVE。

我没有尝试部署应用程序以查看它是否在那里工作。在我可以让它在本地环境中工作之前,这可能不是一个好主意。

这里有一些设置

参数,VM 参数:

-javaagent:/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.5/appengine-java-sdk-1.6.5/lib/agent/appengine-agent.jar -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50 -Xmx512m -XstartOnFirstThread -Xbootclasspath/p:/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.5/appengine-java-sdk-1.6.5/lib/override/appengine-dev-jdk-overrides.jar

App 引擎:

选中使用 Google App Eninge

选择使用默认 SDK (appengine-java-sdk-1.6.5 - 1.6.5)

选中启用本地 HRD 支持

使用 Datanucleus JDO/JPA 访问选中的数据存储

【问题讨论】:

    标签: java eclipse google-app-engine


    【解决方案1】:

    您似乎没有正确使用跨组 (XG) 交易。查看事务文档并查看“使用跨组事务”部分下的代码示例。有一个很好的工作代码示例可以帮助您入门。

    https://developers.google.com/appengine/docs/java/datastore/transactions#Uses_for_Transactions

    【讨论】:

    • 感谢您的链接。我们一直在整个代码中使用事务,它运行良好。我要解决的问题是为什么我们的本地开发环境似乎卡在 MASTER_SLAVE 上,而不是让我们使用 HIGH_REPLICATION。我假设这就是我们还不能进行跨组交易的原因。
    • 我创建了一个新的 Hello World 项目,并从您提供的链接中添加了代码 XG 代码。即使数据存储仍然报告它是 MASTER_SLAVE,我也可以工作。这让我认为 Objectify 没有正确评估数据存储处理 XG 的能力。非常感谢您的帮助。
    猜你喜欢
    • 2021-05-03
    • 2012-04-05
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多