Java 版 Google Cloud CLI 包含一个本地开发服务器,用于在您的计算机上测试您的应用。本地开发服务器模拟 App Engine 的 Java 运行时环境及其所有服务,包括 Datastore。
运行开发网络服务器
有关为应用设置系统属性和环境变量的信息,请参阅请求的处理方式。
您还可以通过命令提示符运行开发 Web 服务器。要运行的命令位于 SDK 的 google-cloud-sdk/bin/
目录中。
Windows 命令语法:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Linux 或 macOS 命令语法:
google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
该命令接受应用的 WAR 目录位置当作参数。
停止开发服务器
要停止 Web 服务器,请按 Ctrl-C。
检测应用运行时环境
如需确定您的代码是在生产环境中运行还是在本地开发服务器中运行,您可以检查 SystemProperty.environment.value()
方法的值。例如:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Production
} else {
// Local development server
// which is: SystemProperty.Environment.Value.Development
}
使用本地 Datastore 模拟器
开发 Web 服务器使用您计算机上本地基于文件的 Datastore 来模拟 Datastore。Datastore 名为 local_db.bin
,它是在您应用的 WAR 目录(WEB-INF /appengine-generated/
目录)中创建的。该 Datastore 不随应用一起上传。
此 Datastore 在前后两次调用网络服务器之间保持不变,因此在您下次运行网络服务器时,您存储的数据仍可用。要清除 Datastore 的内容,请关闭服务器,然后删除该文件。
如 Datastore 索引配置中所述,开发服务器可以为您的应用所需的 Datastore 索引生成配置(根据应用在测试期间执行的查询确定)。这将会在 WAR 的 WEB-INF/appengine-generated/
目录中生成一个名为 datastore-indexes-auto.xml
的文件。如需停用自动索引配置,请使用 <datastore-indexes>
元素的 autoGenerate="false"
特性在 WEB-INF/
目录中创建或修改 datastore-indexes.xml
文件。
在开发服务器中浏览 Datastore
如需使用开发 Web 服务器浏览本地 Datastore,请执行以下操作:
- 根据上文所述启动开发服务器。
- 转到开发控制台。
- 点击左侧导航窗格中的 Datastore 查看器以查看本地 Datastore 内容。
Cloud Datastore 一致性模型
默认情况下,本地 Datastore 已配置,因此那些不会立即显示在全局查询中的 Datastore 写入所占百分比设置为 10%。
如需调整此一致性级别,请设置 datastore.default_high_rep_job_policy_unapplied_job_pct
系统属性,使其值对应于应用所需的最终一致性数量。
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
如果您使用命令提示符 java_dev_appserver.sh
设置此属性,则需要使用 --jvm_flag=...
进行设置:
google_cloud_sdk/bin/java-dev_appserver.sh --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
datastore.default_high_rep_job_policy_unapplied_job_pct
的有效范围介于 0 到 100 之间。如果您使用此范围之外的数字,则会收到错误消息。
指定自动 ID 分配政策
您可以配置本地 Datastore 分配自动实体 ID 的方式(请注意,此信息适用于 Java 11 运行时和 Java 8 运行时)。
开发服务器支持以下自动 ID 分配政策:
sequential
- ID 从连续整数序列分配。
scattered
- ID 从大致均匀分布的整数的非重复序列分配。
本地 Datastore 中的默认政策是 scattered
。
如需指定自动 ID 政策,请将 datastore.auto_id_allocation_policy
系统属性设置为 sequential
或 scattered
。
-Ddatastore.auto_id_allocation_policy=scattered
如需通过传递给 dev_appserver 宏的标志来设置此系统属性,请使用以下命令:
java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
模拟用户账号
开发 Web 服务器使用自己的登录和退出登录页面模拟 Google 账号。在开发 Web 服务器中运行时,生成登录和退出登录网址的方法会在本地服务器上返回 /_ah/login
和 /_ah/logout
的网址。
开发登录页面包含一个表单,您可以在其中输入电子邮件地址。会话将使用您输入的电子邮件地址作为活跃用户。
要让应用认为登录用户是管理员,请选中表单上的“以管理员身份登录”(Sign in as Administrator) 复选框。
使用网址提取
当应用使用 URL Fetch API 发出 HTTP 请求时,开发 Web 服务器会直接从您的计算机中发出该请求。如果您使用代理服务器访问网站,该行为可能与在 App Engine 上运行应用时不同。
开发控制台
开发 Web 服务器包含一个控制台 Web 应用。借助该控制台,您可以浏览本地 Datastore。
如要访问该控制台,请在您的服务器上访问 /_ah/admin
网址:http://localhost:8080/_ah/admin
命令行参数
如需了解本地开发服务器命令选项,请参阅此处。