Google Cloud Endpoints:端点配置未更新

时间:2017-01-13 14:16:07

标签: google-app-engine google-cloud-endpoints

我正在Eclipse Mars(4.5)上使用Google Cloud Endpoints和Google Cloud SDK 1.9.48构建一些商业API。我一直在app引擎上部署它们并使用api explorer进行测试。我们在一段时间内添加了更多的apis,一切都运行良好。奇怪的一天,我们观察到奇怪的行为,这对我们构成了阻碍。尽管部署了应用程序,端点部署仍然失败。部署暂停大约2-3分钟(似乎连接到远程端点服务器。),然后继续忽略端点的故障。 端点部署失败,并在Eclipse控制台上显示以下日志:

... 验证可用性:

Will check again in 1 seconds.
Will check again in 2 seconds.
Will check again in 4 seconds.
Will check again in 8 seconds.
Will check again in 16 seconds.
Will check again in 32 seconds.
Will check again in 60 seconds.
Endpoints configuration not updated.  The app returned an error when the Google Cloud Endpoints server attempted to communicate with it.
See the deployment troubleshooting documentation for more information: https://developers.google.com/appengine/docs/java/endpoints/test_deploy#troubleshooting_a_deployment_failure
Ignoring Endpoints failure and proceeding with update.
Closing update: new version is ready to start serving.

在应用引擎日志中,以下是记录的错误:

/ _啊/ SPI / BackendService.getApiConfigs 显示java.lang.NullPointerException     在com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:102)     在com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:73)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:637)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:717) ...

来自servlet的未捕获异常 java.lang.NoClassDefFoundError:com / fasterxml / jackson / databind / JsonNode     在com.google.api.server.spi.SystemService $ Builder.withDefaults(SystemService.java:517)     在com.google.api.server.spi.SystemServiceServlet.createSystemService(SystemServiceServlet.java:133) ...

此处提供的故障排除链接没有多大帮助。 我怀疑,我的一些端点可能导致这种失败但是,以任何顺序评论端点类都无济于事。特别是,日志donot帮助我找到错误的api类。

1 个答案:

答案 0 :(得分:0)

我有这个问题:

  1. 检查您的web.xml和servlet类是否已正确映射。
  2. 检查你的一个类是否创建了另一个类的对象(在我的例子中是Dao类)并且两个都有相同的Objectify对象.... [基本上如果你有class1,并且如果你正在创建class2的对象(比如class1Dao和class2Dao)并且两者都有相同的Objectify objcty=..... 然后它发生在谷歌云端点服务器变得混乱]
  3. 在我的情况下帮助...基本上我做了一个非常粗鲁的解决方案, 我从class2Dao删除了Class1Dao对象实例化,并将方法从class2Dao剪切粘贴到我之前从class1Dao访问的Class1Dao

    替代解决方案是更改Objectify对象的名称。

    示例:

      

    在class1中objectify objctfy1 = ....而在class2中Objectify objctfy2 = ....

    希望这有帮助,我很难解释:)