我按照以下指南部署了 Google 的移动后端启动器: https ://developers.google.com/cloud/samples/mbs/deploy_backend
我在这些步骤上与客户一起对其进行了测试,并且运行良好。
现在,我从
https://github.com/bradabrams/GeekSerendipity-io13
并按照以下步骤操作
直到第 3 步。到目前为止,我可以看到一张地图,它在地图上正确显示了我的位置。但是,当我查看 AppEngine 日志时,我看到以下异常:
com.google.api.server.spi.SystemService invokeServiceMethod: cause={0} java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at com.google.cloud.backend.beans.FilterDto.getOperand(FilterDto.java:131)
at com.google.cloud.backend.beans.FilterDto.getDatastoreFilter(FilterDto.java:99)
at com.google.cloud.backend.spi.QueryOperations.executeQuery(QueryOperations.java:109)
at com.google.cloud.backend.spi.QueryOperations.list(QueryOperations.java:84)
at com.google.cloud.backend.spi.EndpointV1.list(EndpointV1.java:227)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:45)
at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:339)
at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:163)
at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:435)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:442)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:186)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:306)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:298)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:439)
at java.lang.Thread.run(Thread.java:722)
为什么我会收到此异常?
我检查过的事情:
Consts.java 中的项目 ID 和项目编号是正确的。
我检查了 Android Manifest 以查看我的 Maps API 密钥是否正确
在代码控制台中为 Maps API Key 指定的包名称正确:;com.turbomanage.sample.geekwatch
Appengine 后端本身运行良好。这是 API 资源管理器链接:
身份验证设置为“OPEN”,因此不应因任何原因被阻止。
由于我已经针对https://developers.google.com/cloud/samples/mbs/android/中提到的 Android 示例应用程序测试了后端。看起来后端运行良好。很可能,这看起来像是 Geek Serendipity 客户端传递错误参数的情况。
在 Eclipse 中,我检查了代码以查看 CloudQuery 和 QueryDto 的外观,下面是它的外观:
云查询:
CloudQuery (Geek/PAST): filter: F: op: EQ, values: [name, null]
查询Dto:
{filterDto={operator=EQ, values=[name, null]}, kindName=Geek, limit=1, regId=APA91bHtELzN0oF2ZtUa91epD7gzxtM8R7EUP7O7w_9ebCxT7bEFbWO9CEhmkulOayXkJ8zRz1eXehfh-ZD4Mru0bug7nbnolrDdzOlbN5orsixKUyyZtMyHOy7MHNfA46gFQEWfvo9FQdCe8fsZ1qlumuyybSgQJw, scope=PAST, sortAscending=false, sortedPropertyName=name}
我怀疑这里的问题是值:[name,null]。但我无法进一步解读。这个查询应该是什么样子?
根据应用程序描述,我们可能正在尝试在此处查询所有可用的“Geek”实例,以显示在地图上,但由于我不熟悉 Google 提供的此示例代码,因此我不确定是否是这种情况。(我也是 EndPoints 的新手,这就是我尝试 Geek Serendipity 应用程序作为初学者的原因)
此外,到目前为止,我们的数据存储区有 0 个“极客”类型的实例。
我真的很感激任何可以帮助我继续调试的指针。
更新: 我尝试了来自 API Explorer 的相同查询。它返回 HTTP 200 OK,但我仍然在 AppEngine 日志中看到异常。
事实上,即使我从查询中删除 {filterDto={operator=EQ, values=[name, null]} ,日志中的错误也会出现。
我开始怀疑这是否是我不必要担心的无害错误。我将继续执行剩余的步骤,看看是否遇到任何其他问题。