Google App Engine HRD无法在Eclipse开发环境中运行

时间:2012-05-04 16:55:41

标签: java eclipse google-app-engine

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

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

我们正在开发一个在GAE上运行的新Java应用程序。我们从使用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 Engine:

使用Google App Eninge检查

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

启用本地HRD支持

使用Datanucleus JDO / JPA访问已检查的数据存储

1 个答案:

答案 0 :(得分:0)

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

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