【问题标题】:How do I enable High Replication Datastore on local dev_appserver?如何在本地 dev_appserver 上启用 High Replication Datastore?
【发布时间】:2013-01-17 00:06:18
【问题描述】:

我正在使用最新的 Java SDK 1.7.4,以及以下命令来启动开发服务器:

%java.home%\bin\java -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 -cp "%~dp0\..\lib\appengine-tools-api.jar" ^
    com.google.appengine.tools.KickStart ^
       com.google.appengine.tools.development.DevAppServerMain %*

( "datastore.default_high_rep_job_policy_unapplied_job_pct=20" 如https://developers.google.com/appengine/docs/java/tools/devserver#Using_the_Datastore )

然而,日志显示对 Datastore 的第一个请求:

INFO: Local Datastore initialized:
        Type: Master/Slave

然后,我得到一个异常:

31.01.2013 19:16:02 org.datanucleus.transaction.Transaction rollback
SEVERE: Operation rollback failed on resource: org.datanucleus.store.appengine.DatastoreXAResource@404eb2, error code UNKNOWN and transaction: [DataNucleus Transaction, ID=Xid=    , enlisted resources=[org.datanucleus.store.appengine.DatastoreXAResource@404eb2]]
31.01.2013 19:16:02 com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /themepark/post
java.lang.IllegalArgumentException: transactions on multiple entity groups only allowed in High Replication applications

我在\META-INF\jdoconfig.xml 中有以下行来启用跨组 (XG) 交易:

<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
<property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true"/>

如何使dev_appserver.cmd 模拟高复制数据存储?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore jdo


    【解决方案1】:

    更新:

    使用提供的 dev_appserver.cmd 传递参数并运行您的代码,如下所示:

    dev_appserver --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 &lt;path_to_war_dir&gt;

    如果您愿意,可以尝试将--jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 包含在您的dev_appserver.cmd 文件的末尾(就在%* 之前)

    旧:

    将以下内容添加到您的命令行:

    -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

    这是这里首先介绍的内容之一(以及您可以使用的其他方法):https://developers.google.com/appengine/docs/java/tools/devserver#Using_the_Datastore

    【讨论】:

    • 我已经使用了这个选项。它在原始问题中提到。
    • 更新了我的答案,抱歉我错过了
    • 嗯。我真的不明白为什么/如何 com.google.appengine.tools.development.DevAppServerMain 忽略使用 -D 选项设置的系统属性,但是 --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 选项作为参数传递给 com.google.appengine.tools.development.DevAppServerMain 类,做到这一点,并在 HR 中运行开发服务器模式。谷歌的文档对此事非常不清楚。谢谢!
    • 所以正确的命令是:%java.home%\bin\java -cp "%~dp0\..\lib\appengine-tools-api.jar" ^ com.google.appengine. tools.KickStart ^ com.google.appengine.tools.development.DevAppServerMain --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 %*
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多