使用App Engine在本地计算机上定制数据存储位置

我正在Android Studio中开发App Engine应用程序,并在本地机器上(使用本地数据存储)对其进行testing。 这是基于Java的应用程序。 每次我重新运行服务器本地数据存储被清除。 我已经为Python开发者find了几个解决scheme,但是看起来Java没有答案。

Android Studio只允许更改:

  • WARpath
  • VM Args
  • 服务器地址
  • 服务器端口

我已经尝试过使用虚拟机参数,但是这些对于Java虚拟机来说显然不适用于应用服务器。 有没有办法跨服务器重启持续本地数据存储? 这将是完美的如果我可以从Android Studio直接运行此configuration。

Solutions Collecting From Web of "使用App Engine在本地计算机上定制数据存储位置"

本地数据存储被清除,因为它默认位于应用程序分解的war目录中(在每个版本中将其全部删除)。

不必从terminal手动运行dev服务器,实际上只需将一个虚拟机arg添加到appengine运行configuration中即可将数据存储定位到另一个位置:

-Ddatastore.backing_store="/path/to/datastore/file/location/local_db.bin" 

(解决scheme见https://code.google.com/p/android/issues/detail?id=68225

像Arjan说的那样,你可以使用-Ddatastore.backing_store

如果您使用Android Studio 1.5,请修改build.gradle 。 在appengine放了参数jvmFlags 。 例:

  appengine { downloadSdk = true appcfg { oauth2 = true } jvmFlags = ["-Ddatastore.backing_store=\"D:/temp/local_db.bin\""] } 

经过几个小时的search,我终于find了如何使用用户定义的文件作为本地存储。 不幸的是,它不能直接从Android Studio工作,服务器必须从terminal运行。

这里是Java的dev-appserver的参数:

 Usage: <dev-appserver> [options] <app directory> Options: --help, -h Show this help message and exit. --sdk_root=DIR Overrides where the SDK is located. --server=SERVER The server to use to determine the latest -s SERVER SDK version. --address=ADDRESS The address of the interface on the local machine -a ADDRESS to bind to (or 0.0.0.0 for all interfaces). --port=PORT The port number to bind to on the local machine. -p PORT --disable_update_check Disable the check for newer SDK versions. --generated_dir=DIR Set the directory where generated files are created. --default_gcs_bucket=NAME Set the default Google Cloud Storage bucket name. --jvm_flag=FLAG Pass FLAG as a JVM argument. May be repeated to supply multiple flags. 

您必须更改generated_dir参数。 要直接从terminal运行dev服务器,有一个非常好的命令:

/ usr / lib / jvm / default-java / bin / java -javaagent:$ HOME / .gradle / appengine -sdk / appengine -java -sdk-1.9.9 / lib / agent / appengine-agent.jar -Xbootclasspath / p :$ HOME / .gradle / appengine-sdk / appengine -java -sdk-1.9.9 / lib /覆盖/ appengine-dev-jdk-overrides.jar -Didea.launcher.port = 7533 -Didea.launcher.bin.path = / opt / android-studio / bin -Dfile.encoding = UTF-8 -classpath $ HOME / .gradle / appengine -sdk / appengine -java -sdk-1.9.9 / lib / appengine-tools-api.jar:/ opt / android-studio / lib / idea_rt.jar com.intellij.rt.execution.application.AppMain com.google.appengine.tools.development.DevAppServerMain –address = 0.0.0.0 –port = 8080 –generated_dir = $ HOME / sandbox / $ HOME / app / backend / build / exploded-app

我已将generated_dir参数更改为--generated_dir=$HOME/sandbox/

请注意,您必须提供Android Studiopath和App Engine SDK版本。 对于我的工作站,它是/opt/android-studioappengine-java-sdk-1.9.9