首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >com.google.api.config.ServiceConfigSupplier -未能获取服务的默认配置版本(仅在本地主机上)

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

Stack Overflow用户
提问于 2017-02-23 08:19:52
回答 7查看 2.7K关注 0票数 7

我使用(2.0.1)作为我最后一年项目的一部分,到目前为止在这方面还是比较成功的。在部署到我的appspot.com域时,我没有任何问题,但是在本地部署时,我遇到了一些问题。

(以下代码块中对的任何引用都是我的实际google云项目id的别名)

我有一个带注释的@API类的有效openapi描述符(openapi.json),我使用"gcloud服务管理部署openapi.json“将其部署到云端点。该命令成功返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Service Configuration [2017-02-23r0] uploaded for service [api.endpoints.<my-project-id>.cloud.goog]

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
endpoints_api_service:
  name: api.endpoints.<my-project-id>.cloud.goog
  config_id: 2017-02-23r0

此服务由使用"gcloud服务-管理列表“的gcloud cli工具列出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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服务-管理层信任列表--服务api.endpoints.my-project-id.cloud.goog“

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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启动时,我遇到了以下异常:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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: Service not“错误。

我假设我的应用程序的本地部署可以访问使用"gcloud服务管理部署“部署的服务配置,就像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的使用。我希望有人能对这个问题有所了解。

EN

回答 7

Stack Overflow用户

发布于 2017-04-10 20:36:10

这不是一个修复,但我能够通过使用https://stackoverflow.com/a/41493548/1410035中的建议来解决这个问题。

即,注释掉ServiceManagementConfigFilter

( b)将ServiceManagementConfigFilter从web.xml中剔除(

请注意,您必须注释掉filter filter-mapping,它们在文件中的位置不同。

我发现我不需要删除链接答案中的'a‘点中提到的缩放块。

票数 4
EN

Stack Overflow用户

发布于 2017-03-29 19:36:29

如果您已经删除了所有最近的更新,这可能与权限问题有关。git pull还可以使用:gcloud components update检查Cloud是否是最新的。

假设您遵循了在https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java上列出的说明。为了解决这个问题,您可以创建一个具有必要权限的服务帐户,或者使用命令gcloud auth application-default login

您可以在https://cloud.google.com/sdk/docs/authorizing上使用Cloud设置服务帐户。

如果你还有问题,请告诉我。

至于命令gcloud auth application-default login。根据帮助描述:

通过web流获取用户访问凭据,并将它们放置在应用程序默认凭据的著名位置,以便将它们用作服务帐户的代理。

当您使用此命令时,它将获得gcloud您的Gmail帐户的凭据。something@gmail.com,然后将凭据存储在已知包含应用程序凭据的位置。

票数 3
EN

Stack Overflow用户

发布于 2017-06-08 13:54:14

它与"gradle appengineRun“一起工作,但在IntelliJ Idea项目中,我不得不替换web.xml和appengine-web.xml中的所有${endpoints.project.id},以从IntelliJ运行/调试本地主机(从gradle源代码导入,安装GoogleCloudTools插件,并从Tools /GoogleCloudTools/在本地appengine标准dev服务器上运行运行/调试配置)。

我的错误是:未能获取服务'echo-api.endpoints.${endpoints.project.id}.cloud.goog'.的默认配置版本。不存在版本!

cloud.google.com文档只有Maven构建示例Gradle构建在github.com

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42421042

复制
相关文章
被解放的姜戈05 黑面管家
Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,来管理我们的数据库。这一工具,主要是为网
Vamei
2018/01/18
1.2K0
被解放的姜戈05 黑面管家
被解放的姜戈01 初试天涯
Django是Python下的一款网络服务器框架。Python下有许多款不同的框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。虽然Django之于Pytho
Vamei
2018/01/18
2.8K0
被解放的姜戈01 初试天涯
被解放的姜戈02 庄园疑云
上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App。这一回,我们要走入糖果庄园。 数据库是一所大庄园,藏着各种宝贝。一个没有数据库的网站,所能提供的功能会非常有限。 为
Vamei
2018/01/18
1.6K0
被解放的姜戈02 庄园疑云
被解放的姜戈04 各取所需
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在庄园疑云中讲到了服务器上的数据。当时我们是用手动的方式,直接在数据库插入数
Vamei
2018/01/18
1.1K0
被解放的姜戈04 各取所需
被解放的姜戈03 所谓伊人
在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端。这一过程中使用了django.http.HttpResponse()。 在这样的一种回复生成过程中,我们实际上将数据和视图的格式
Vamei
2018/01/18
1K0
被解放的姜戈03 所谓伊人
被解放的姜戈06 假作真时
之前了解了: 创建Django项目 数据库 模板 表格提交 admin管理页面 上面的功能模块允许我们做出一个具有互动性的站点,但无法验证用户的身份。我们这次了解用户验证部分。通过用户验证,我们可以根据用户的身份,提供不同的服务。 一个Web应用的用户验证是它的基本组成部分。我们在使用一个应用时,总是从“登录”开始,到“登出”结束。另一方面,用户验证又和网站安全、数据库安全息息相关。HTTP协议是无状态的,但我们可以利用储存在客户端的cookie或者储存在服务器的session来记录用户的访问。  Djan
Vamei
2018/01/18
1.3K0
被解放的姜戈06 假作真时
被解放的姜戈07 马不停蹄
前面的文章研究了Django最主要的几个方面:数据库,模板,动态生成页面等。但都是使用python manage.py runserver来运行服务器。这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。 这样的持续性服务器可以有很多选择,比如apache, Nginx, lighttpd等。这里将使用最常见的apache服务器。服务器和Django之间通过Python的
Vamei
2018/01/18
1K0
被解放的姜戈07 马不停蹄
被解放的姜戈08 远走高飞
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系。  之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器
Vamei
2018/01/18
6350
被解放的姜戈08 远走高飞
(转)js获取get变量函数
function GetQueryString(name) {     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");     var r = window.location.search.substr(1).match(reg);     if (r != null) return decodeURIComponent(r[2]); return null; } //直接调用GetQueryString(get变量名)
仙士可
2019/12/17
5.1K0
获取、修改前端HTML标签信息【jQuery】
还在用 document.getelementById('xxx').value 这种方式来获取H妈妈[HTML]某类标签信息嘛,最近用上jquery的方式,爱不释手。下面记录了几个取值案例,(会后续补充)
来杯Sherry
2023/05/25
1.3K0
jquery中通过鼠标获取页面坐标
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>jquery_shijian_function.html</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){
闵开慧
2018/03/30
3.3K0
通过getter获取setter函数
放在:https://gitee.com/dromara/stream-query
阿超
2023/06/23
1430
JavaScript 学习-36.jQuery 获取和修改HTML
前言 jQuery 可以获取和修改HTML元素的属性和文本内容 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) attr() - 获取或设置属性 val() - 设置或返回表单字段的值 获取文本 text() 和 html() text()是获取文本内容,html()返回所选元素的内容(包括 HTML 标记) <h3>获取html内容</h3> <div id="demo"> <p class="text-info">hello w
上海-悠悠
2022/05/31
7970
JavaScript 学习-36.jQuery 获取和修改HTML
详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数。而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明。 1 $.get("data.php",$("#firstName.val()"),function(data){ 2 3
用户1214487
2018/01/24
3.9K0
通过time()函数获取时间戳
取走直接用,当个 demo 挺好的。 #include <iostream> #include <time.h> #include <unistd.h> using namespace std; int main() { string str; time_t myt = time(NULL); cout << "sizeof(time_t) is: " << sizeof(time_t) << endl; cout << "myt is :" << myt << endl;
看、未来
2021/10/21
8180
通过jQuery获取页面中radio选中的值
<tr> <td class="tdtext" colspan="3">2、廉洁自律,不利用岗位职权方便谋取私利。</td> <td class="trss"><input name="radio17" type="radio" value="5" required/></td> <td class="trss"><input name="radio17" type="radio" value="4" /></td> <td class="trss"><input name=
SingYi
2022/07/13
5.6K0
通过jQuery获取页面中radio选中的值
fopen()、 file_get_contents() 通过url获取链接内容
功能:获得网页内容 区别如下: fopen()打开URL 下面是一个使用fopen()打开URL的例子: <?php $fh = fopen('http://www.baidu.com/', 'r'
WindWant
2020/09/11
1.4K0
更加方便获取eid和fp的一种方式-通过HTML文件
原来有一篇文章的教程,获取eid和fp的。 https://chenhx.blog.csdn.net/article/details/112069082
谙忆
2021/01/19
8540
Android通过URI获取文件路径
之前在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分就搞定了。那么相册中选择图片的也是一样的道理,应该也是轻松解决了。 至于选择图片的代码,如下所示: intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); inte
俞其荣
2018/05/21
3K0
点击加载更多

相似问题

在Android中启动新活动的多个意图标志

33

Java/Android -启动新活动标志错误

22

Android:无法使用意图启动新活动

80

Android -带有标志的待定意图

17

启动器活动意图标志

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文