我有一个在 Google App Engine 中运行的 Java 应用程序。我需要以编程方式获取它在 Java 中运行的项目的 ID。
This question解释了如何使用 Python 实现我的目标,但这当然不是 Java。
This documentation说我可以简单地调用 ApiProxy.getCurrentEnvironment().getAppId()
,但此方法在我的应用程序中仅返回 null。
This question解释了如何通过 HTTP 请求获取项目 ID,但我想知道是否有更好的方法在 Java 中执行此操作,而无需手动构造 HTTP 请求?
编辑:Luyi 的答案似乎对大多数人都有效,但对我来说返回 null。
最佳答案
您可以使用 com.google.cloud.ServiceOptions
帮助程序获取默认项目 ID。
它将为您提供一些抽象,以便能够根据您的上下文和当前应用程序引擎运行时检索project-id
。
例如Java11运行时不支持某些旧的API。通过 HTTP 请求元数据来获取 project-id
是一种通用的解决方案。
在这种情况下,ServiceOptions.getDefaultProjectId
是保持代码通用且简单的好方法。
Spring Cloud GCP在幕后使用此方法来检索 project-id
。
导入 google-cloud-core
依赖项:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core</artifactId>
<version>1.94.0</version>
</dependency>
然后使用ServiceOptions
:
import com.google.cloud.ServiceOptions;
...
String projectId = ServiceOptions.getDefaultProjectId();
关于java - 如何获取Java应用程序正在运行的GAE项目的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65741824/