Java 如何在本地dev_appserver上启用高复制数据存储?
我正在使用最新的Java SDK 1.7.4和以下命令启动dev server:Java 如何在本地dev_appserver上启用高复制数据存储?,java,google-app-engine,google-cloud-datastore,jdo,Java,Google App Engine,Google Cloud Datastore,Jdo,我正在使用最新的Java SDK 1.7.4和以下命令启动dev server: %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.devel
%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\u high\u rep\u job\u policy\u unapplied\u job\u 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模拟高复制数据存储?更新: 使用提供的dev_appserver.cmd传入参数并按如下方式运行代码:
dev\u appserver--jvm\u flag=-Ddatastore.default\u high\u rep\u job\u policy\u unapplied\u job\u pct=20
如果愿意,可以尝试将--jvm\u flag=-Ddatastore.default\u high\u rep\u job\u policy\u unapplied\u job\u pct=20
包含在dev\u appserver.cmd
文件的末尾(就在%*
之前)
旧版:
将以下内容添加到命令行:
-Ddatastore.default\u high\u rep\u job\u policy\u unapplied\u job\u pct=20
这是本文首先介绍的内容之一(以及您可以使用的其他方法):我已经使用了此选项。原来的问题中提到了。更新了我的答案,抱歉我错过了。嗯。我真的不明白为什么/how
com.google.appengine.tools.development.DevAppServerMain
会忽略使用-D选项设置的系统属性,但是--jvm\u标志=-Ddatastore.default\u high\u rep\u job\u policy\u unapplied\u job\u pct=20
选项,将其作为参数传递给com.google.appengine.tools.development.DevAppServerMain
类,执行该技巧,并在HR模式下运行dev server。谷歌的文件对此问题非常不清楚。非常感谢。因此,正确的命令是:%java.home%\bin\java-cp“%~dp0\..\lib\appengine tools api.jar”^com.google.appengine.tools.KickStart^com.google.appengine.tools.development.DevAppServerMain--jvm\u flag=-Ddatastore.default\u high\u rep\u job\u policy\u unapplied\u job\u pct=20%*