我正在使用最新的Java SDK 1.7.4,以及以下命令来启动dev服务器:
%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 %*
(https://developers.google.com/appengine/docs/java/tools/devserver#Using_the_Datastore中的“datastore.default_high_rep_job_policy_unapplied_job_pct = 20”)
然而,log在第一次请求数据存储时说:
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
模拟高复制数据存储?
答案 0 :(得分:2)
<强>更新强>
使用提供的dev_appserver.cmd传递参数并按如下方式运行代码:
dev_appserver --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 <path_to_war_dir>
如果您愿意,可以尝试将--jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
添加到dev_appserver.cmd
文件的末尾(%*
之前)
<强> OLD:强>
将以下内容添加到命令行:
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
这是此处介绍的第一件事(以及您可以使用的其他方法):https://developers.google.com/appengine/docs/java/tools/devserver#Using_the_Datastore