我一直在使用 Google Cloud Endpoints (Java),但在部署到 App Engine(同时使用 Eclipse + Google Plugin 和 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
有人有什么想法吗?提前致谢。