Пользовательское хранилище данных на локальном компьютере с App Engine

Я разрабатываю приложение App Engine в Android Studio и тестирую его на своей локальной машине (с локальным хранилищем данных). Это приложение на основе Java. При каждом повторном запуске сервера локальное хранилище данных очищается. Я нашел несколько решений для разработчиков Python, но похоже, что для Java нет ответа.

Android Studio позволяет изменять только:

  • Путь WAR
  • VM Args
  • Адрес сервера
  • Порт сервера

Я пробовал с VM args, но это для Java VM не для сервера приложений, очевидно. Есть ли способ сохранить локальное хранилище данных при перезагрузке сервера? Было бы идеально, если бы я мог запускать эту конфигурацию непосредственно из Android Studio.

Solutions Collecting From Web of "Пользовательское хранилище данных на локальном компьютере с App Engine"

Локальный хранилище данных очищается, потому что по умолчанию он находится в каталоге взорванных военных приложений (который полностью удаляется при каждой сборке).

Вместо того, чтобы запускать сервер dev вручную с терминала, вы можете просто добавить VM arg в конфигурацию запуска appengine, чтобы найти хранилище данных в другом месте:

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

(Решение найдено по адресу : https://code.google.com/p/android/issues/detail?id=68225 )

Как говорит Арьян, вы можете использовать -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\""] } 

После нескольких часов поиска я наконец нашел, как использовать пользовательский файл в качестве локального хранилища. К сожалению, это не работает непосредственно с Android Studio, серверы должны запускаться с терминала.

Вот аргументы для dev-appserver для Java:

 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 . Для запуска 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 / песочница / $ HOME / app / backend / build / exploded-app

Я изменил аргумент generated_dir на --generated_dir=$HOME/sandbox/

Обратите внимание, что вы должны предоставить версию Android Studio и версию App Engine SDK. Для моей рабочей станции это /opt/android-studio и appengine-java-sdk-1.9.9 соответственно.