java - Google Cloud Endpoints - API 未更新

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

我一直在尝试使用 Google Cloud Endpoints (Java),但在部署到 App Engine 后(同时使用 Eclipse + Google 插件和 Android Studio),我无法更新 API。

我基于名为 Process(使用 JPA 注释)的类创建了一个端点。它位于我的包中(比方说:com.example)。我第一次部署它时不小心导入了错误的类(java.lang.Process 而不是我的 com.example.Process)。因此,当我在 API 资源管理器中测试其中一种方法时出现此错误:

com.google.api.server.spi.SystemService invokeServiceMethod: cause={0}
javax.persistence.PersistenceException: No meta data for java.lang.Process.  Perhaps you need to run the enhancer on this class?

然后我更正了导入,重新生成了客户端库并将应用程序重新部署到 App Engine,但我仍然遇到同样的错误。好像 App Engine 仍然认为我使用的是 java.lang.Process 而不是我的 Process 类。

我还进行了其他更改。像类成员变量类型和方法名一样重新部署。但是 App Engine 似乎没有注意到这些变化。

我读到 API Explorer 如何“暴力缓存”,所以我尝试清除缓存,在另一个浏览器中打开,甚至在另一台 PC 上打开。还是什么都没有。

另外,我打开了位于 https://.appspot.com/_ah/api/discovery/v1/apis//v1/rest 的 api 的发现文件 我注意到我更改的变量类型仍列为旧类型。

我检查了我的部署日志。他们看起来都不错:

2013-07-06 18:59:59.960 /_ah/spi/BackendService.getApiConfigs 200 291ms 14kb
I 2013-07-06 18:59:59.706 com.google.api.server.spi.BackendService getApiConfigs: apiConfigDir=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF
I 2013-07-06 18:59:59.707 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/<my-api-name>-v1.api
I 2013-07-06 18:59:59.713 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/messageEndpoint-v1
I 2013-07-06 18:59:59.740 com.google.api.server.spi.BackendService getApiConfigs: apiConfigFile=/base/data/home/apps/s~<my-app>/1.368601601499931812/WEB-INF/deviceinfoendpoint

在管理日志中:

2013-07-06 18:59:35 <me>    Successfully updated API configuration  version=1
2013-07-06 18:59:35 <me>    Completed update of a new default version   version=1.2013-07-06T21:59:30Z
2013-07-06 18:59:32 <me>    Deployed a new version  version=1.2013-07-06T21:59:30Z

有人知道吗? 提前致谢。

最佳答案

您的 .api 文件似乎没有正确重新生成。如果删除 .api 文件,它们是否会在加载到开发中或加载到 App Engine 时重新生成?

使用更新信息重新创建 .api 文件的常见原因(即我过去犯的错误):

  • 不允许使用原语和枚举。您必须传回一个 Bean。
  • API 方法没有注释
  • API 方法是“私有(private)的”而不是“公共(public)的”

关于java - Google Cloud Endpoints - API 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507770/

相关文章:

google-app-engine - 检查对象是否存在的最快方法

java - Objectify with Endpoints for android

java - Gmail REST API : 400 Bad Request + Failed Precondition

java - jsp 文件不应用链接的 css 文件的样式

java - SBT 可以使用 `sbt test` 或类似的代码执行编译测试吗?

Java Lejos 抛出 nullpointerException

android - 从 Android 调用 Google Cloud Endpoints API 时出现错误 413(请求实体太大)

java - 限制Elasticsearch中的嵌套字段

android - 谷歌应用引擎和安卓

java - Java Servlet Google App Engine 中的编码