我一直在使用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
任何人都有任何想法? 提前谢谢。
答案 0 :(得分:1)
您的.api文件似乎无法正常重新生成。如果删除.api文件,是否在dev或者加载App Engine时重新生成?
使用更新的信息(即我过去犯过的错误)重新创建.api文件的常见原因: