如何在部署的appengine数据库中调试eclipse中的服务器代码?
我在Eclipse中有一个Google AppEngine(Java)项目。 我想在Eclipse中调试我的本地代码,但是在AppEngine上使用已部署的数据库。 到目前为止,我使用远程API与用户名/密码(旧方式)
这个方法将被弃用,我想使用OAuth,但是当我尝试使用它时,它会引发exception:
java.lang.IllegalStateException: OAuth-based authorization not supported for clients running on App Engine at com.google.appengine.tools.remoteapi.RemoteApiOptions.getOrCreateHttpTransportForOAuth(RemoteApiOptions.java:359) at com.google.appengine.tools.remoteapi.RemoteApiOptions.useApplicationDefaultCredential(RemoteApiOptions.java:162)
当我运行在Eclipse中使用远程api的简单Java客户端应用程序时,可以使用Everthing。 但是如果客户端是Eclipse中的AppEngine开发环境,它就不起作用。
如何使用appengine数据库在eclipse中调试服务器代码?
错误报告: https : //code.google.com/p/googleappengine/issues/detail? id = 12556
这是预期的 ,因为ApiProxy.getCurrentEnvironment()
返回的值不会为null
,而是com.google.appengine.tools.development.LocalHttpRequestEnvironment
对象。 对于开发服务器,您现在必须使用旧样式(用户名/密码)。
根据文档 ,您需要将$ {SDK_ROOT} /lib/appengine-remote-api.jar中的 appengine-remote-api.jar添加到您的WEB-INF / lib目录(或将其添加到您的Maven依赖项)之前将工作。
更新:事实上,看起来App Engine与远程API的OAuth尚未实现。 我认为这会在ClientLogin完全弃用之前发生变化,但是现在我建议在公共问题跟踪器上打开一个function请求。
一种可能的解决方法是创建连接到远程API的常规控制台应用程序(根据文档中的示例),并且可以充当在开发服务器上运行的App Engine应用程序的代理。
除了我的同事亚当和尼基塔此前所说的,我还可以正式确认Google云计算工程团队决定为所有合理的用例提供解决方案,这些用例在截止日期之前受到ClientLogin关闭的影响。
据推测,远程API解决方案将在即将发布的版本1.9.31 / 32中提供,尽管这只是一个假设,并且还没有ETA。
作为替代方案,您可以使用服务帐户凭据远程使用Protobufs访问Cloud Datastore ,这可能符合您当前的需求。
更新2016/01/21:
该团队已将ClientLogin关闭截止日期延长至2016年4月12日。
更新2016/04/12:
如前所述,该修复程序已正确应用,并在最新版本的SDK和gcloud中提供。 远程API现在可以再次与OAuth一起用于app-to-app(或devserver-to-app)连接。