Google Cloud Endpoints - API未更新

时间:2013-07-06 22:45:44

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

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

我基于一个名为Process的类(使用JPA注释)创建了一个Endpoint。它位于我的包中(比方说: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浏览器如何“暴力缓存”,所以我尝试清除缓存,在另一个浏览器中打开,甚至在另一台PC上打开。仍然没有。

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

我检查了部署的日志。它们看起来都很好:

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

任何人都有任何想法? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的.api文件似乎无法正常重新生成。如果删除.api文件,是否在dev或者加载App Engine时重新生成?

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

  • 不允许使用原语和枚举。你必须传回一个Bean。
  • API方法未注释
  • API方法是“私有”而非“公共”