Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在本地dev_appserver上启用高复制数据存储?_Java_Google App Engine_Google Cloud Datastore_Jdo - Fatal编程技术网

Java 如何在本地dev_appserver上启用高复制数据存储?

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 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.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%*