gpt4 book ai didi

java - com.google.api.config.ServiceConfigSupplier - 无法获取服务的默认配置版本(仅在本地主机上)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:43 26 4
gpt4 key购买 nike

作为我最后一年项目的一部分,我正在使用适用于 Java 的 Cloud Endpoints Frameworks (2.0.1),到目前为止,它取得了相对成功。部署到我的 appspot.com 域时我没有遇到任何问题,但是,我在本地部署时遇到了一些问题。

(以下代码块中对 my-project-id 的任何引用都是我实际的谷歌云项目 ID 的别名)

我有一个带注释的@API 类的有效 openapi 描述符 (openapi.json),我正在使用“gcloud service-management deploy openapi.json”将其部署到云端点。命令成功返回:

Service Configuration [2017-02-23r0] uploaded for service [api.endpoints.<my-project-id>.cloud.goog]

然后我将返回的 config_id 映射到我的 app.yaml 中正确的 endpoints_api_service

endpoints_api_service:
name: api.endpoints.<my-project-id>.cloud.goog
config_id: 2017-02-23r0

此服务由 gcloud cli 工具使用“gcloud 服务管理列表”列出

    NAME                                                           TITLE
storage-component.googleapis.com Google Cloud Storage
api.endpoints.<my-project-id>.cloud.goog api.endpoints.<my-project-id>.cloud.goog
etc...

和“gcloud 服务管理配置列表 --service api.endpoints.my-project-id.cloud.goog”

CONFIG_ID        SERVICE_NAME
2017-02-23r0 api.endpoints.<my-project-id>.cloud.goog
... other version configs

并且可以在我的 appspot.com 域上访问(我可以调用端点并收到正确的响应)

我正在尝试使用 java 的 maven appengine 插件(mvn appengine:devserver)在本地主机上部署我的项目,但是在 jetty 启动时我遇到了以下异常:

 WARNING: Failed startup of context com.google.appengine.tools.development.DevAppEngineWebAppContext...

com.google.api.config.ServiceConfigException: Failed to fetch default config version for service 'api.endpoints.<my-project-id>.cloud.goog'. No versions exist!
at com.google.api.config.ServiceConfigSupplier.fetchLatestServiceVersion(ServiceConfigSupplier.java:155)
....

然后部署陷入无休止的循环,尝试启动 jetty,并被错误消息击中,然后重新启动等。任何访问 localhost:8080 的尝试都会导致“503:找不到服务”错误

我假设我的应用程序的本地部署能够访问使用“gcloud service-management deploy”部署的服务配置,就像 appspot.com 部署一样,但事实并非如此?查看 ServiceConfigSupplier.getchLatestServiceVersion() 的源代码,我收集到 serviceManagement.services().configs().list(my-service-name).execute().getServiceConfigs() 正在返回一个空列表,但为什么这只是发生在本地?

额外信息

我的 ENDPOINTS_SERVICE_NAME 环境变量匹配 'api.endpoints.my-project-id.cloud.goog'

我注意到几天前 com.google.api.config 有一个更新 (1.0.2),它依赖于旧版本的 com.google.api.services.servicemanagement(依赖于v1-rev14-1.22.0,最新版本为 v1-rev340-1.22.0)我怀疑这是问题所在,但我想我会提到它,因为它包含与异常相关的类(ServiceManagement 由 ServiceConfigSupplier 使用,它抛出异常)。也许他们在寻找服务配置的地方存在不一致?

老实说,我很困惑,这有点让我头疼。我不喜欢必须删除端点,因为我开始喜欢它,但我们也不能真正失去对我们的 devserver 的使用。我希望有人能对这个问题有所了解。

最佳答案

这不是解决方法,但我能够通过使用 https://stackoverflow.com/a/41493548/1410035 中的建议解决该问题。 .

即,注释掉 ServiceManagementConfigFilter:

b) Comment out the ServiceManagementConfigFilter from web.xml , ie,

<!--
<filter>
<filter-name>endpoints-api-configuration</filter-name>
<filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
</filter>
-->

<!--
<filter-mapping>
<filter-name>endpoints-api-configuration</filter-name>
<servlet-name>EndpointsServlet</servlet-name>
</filter-mapping>
-->

请注意,您必须注释掉 filter filter-mapping 并且它们在文件。

我发现我不需要删除链接答案中“a”点中提到的缩放 block 。

关于java - com.google.api.config.ServiceConfigSupplier - 无法获取服务的默认配置版本(仅在本地主机上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com