Java 使用App Engine的本地计算机上的自定义数据存储位置
我正在androidstudio中开发appengine应用程序,并在我的本地机器(带有本地数据存储)上进行测试。这是一款基于Java的应用程序。每次我重新运行服务器时,本地数据存储都会被清除。我已经为开发人员找到了几种解决方案,但似乎没有针对Java的解决方案 Android Studio仅允许更改:Java 使用App Engine的本地计算机上的自定义数据存储位置,java,android,google-app-engine,Java,Android,Google App Engine,我正在androidstudio中开发appengine应用程序,并在我的本地机器(带有本地数据存储)上进行测试。这是一款基于Java的应用程序。每次我重新运行服务器时,本地数据存储都会被清除。我已经为开发人员找到了几种解决方案,但似乎没有针对Java的解决方案 Android Studio仅允许更改: 战争道路 虚拟机参数 服务器地址 服务器端口 我尝试过使用VM参数,但这些参数是针对Java VM的,显然不是针对应用服务器的。有没有一种方法可以跨服务器重启持久化本地数据存储?如果我可以直
- 战争道路
- 虚拟机参数
- 服务器地址
- 服务器端口
我尝试过使用VM参数,但这些参数是针对Java VM的,显然不是针对应用服务器的。有没有一种方法可以跨服务器重启持久化本地数据存储?如果我可以直接从Android Studio运行此配置,那就太完美了。经过几个小时的搜索,我终于找到了如何使用用户定义的文件作为本地存储。不幸的是,它不能直接从Android Studio运行,服务器必须从终端运行 以下是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.
用法:[选项]
选项:
--帮助,-h显示此帮助消息并退出。
--sdk_root=DIR覆盖sdk所在的位置。
--服务器=用于确定最新版本的服务器
-s服务器SDK版本。
--地址=本地计算机上接口的地址
-要绑定到的地址(或所有接口的0.0.0.0)。
--端口=要在本地计算机上绑定到的端口号。
-p端口
--禁用更新检查禁用对较新SDK版本的检查。
--generated_dir=dir设置创建生成文件的目录。
--default\u gcs\u bucket=NAME设置默认的Google云存储bucket名称。
--jvm_flag=将Pass flag标记为jvm参数。可重复至
提供多个标志。
您必须更改生成的\u dir
参数。要直接从终端运行dev server,有一个非常好的命令:
/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/override/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工具api.jar:/opt/android studio/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain
com.google.appengine.tools.development.DevAppServerMain
--地址=0.0.0.0--port=8080--generated_dir=$HOME/sandbox/$HOME/app/backend/build/app
我已将generated_dir
参数更改为--generated_dir=$HOME/sandbox/
请注意,您必须提供Android Studio路径和应用程序引擎SDK版本。对于我的工作站,它是
/opt/android studio
和appengine-java-sdk-1.9.9
。本地数据存储被清除,因为默认情况下它位于应用程序分解的war目录中(每次构建时都会将其全部删除)
实际上,您不必从终端手动运行dev服务器,只需将VM arg添加到appengine运行配置中,即可在另一个位置找到数据存储:
-Ddatastore.backing_store="/path/to/datastore/file/location/local_db.bin"
(解决方案位于:)正如Arjan所说,您可以使用
-Ddatastore.backing\u store
如果您使用Android Studio 1.5,请修改build.gradle
。在appengine
上放置参数jvmFlags
。例如:
appengine {
downloadSdk = true
appcfg {
oauth2 = true
}
jvmFlags = ["-Ddatastore.backing_store=\"D:/temp/local_db.bin\""]
}
我使用的是java appengine sdk 1.9.12,argumento不再存在:(……你现在是怎么做到的?我已经检查了1.9.14版,它运行得很好。你确定1.9.12版中不存在这些参数吗?非常感谢你的回复!我再次检查了我所做的,我意识到如果我把--generated_dir放在最后,它将不起作用!!!!谢谢!我会在其他问题上粘贴这篇文章的链接!有办法吗不知何故要将此标志添加到渐变中?由于年龄的原因,该问题已被关闭。按照指示,我已在此处重新提交:对我来说非常有用(在重新启动AndroidStudio之后,这可能是有意义的)。