Android Mobile Backend Starter falla con 404 no encontrados … algunas veces

Última tarde he creado un proyecto y desplegado el backend móvil comenzó. He editado el código de cliente y con éxito hizo algunos datos de inserción.

Algún tiempo (horas) después, cambié el código del cliend otra vez y la inserción falló con el error:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found 

Como no hice ningún cambio sustancial en el código, concluí que el error estaba en el lado del motor de aplicaciones, así que redistribuí el proyecto y eso resolvió el problema. Las inserciones aparecieron de nuevo.

Esta mañana volví con el error 404. Esta vez redistribuir no funcionó.

El registro de errores que obtengo en el motor de aplicaciones es:

 Uncaught exception from servlet javax.servlet.UnavailableException: com.google.api.server.spi.config.ApiConfigException: <Entity [GoogleCloudEndpointConfiguration("EndpointV1")]: clientIds = null audiences = null > .audiences was not of type String or List<String>. at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415) at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:451) at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:57) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 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 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266) 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 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146) at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439) at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) at java.lang.Thread.run(Thread.java:722) 

¿Alguna idea de lo que está sucediendo y qué puedo hacer para solucionarlo?

No entiendo completamente lo que está pasando, pero encontré una manera de deshacerme de los errores 404 en el lado del cliente, que son causados ​​por el lado de App Engine que no responde. Los errores informados en los registros del motor de la aplicación están hablando de la audiencia y los identificadores de cliente para la aplicación. Estos son los valores que se establecen al configurar la autenticación para "Secured by Client Ids".

Página de configuración de back-end para dispositivos móviles

Encontré que si puse en algunos valores de la cadena del placeholder allí, ahorré, y entonces volví a "abierto (para el uso del desarrollo solamente)" y ahorré otra vez, el motor de la aplicación no tendría más errores de la configuración y respondería al cliente Android App.

Por el momento estoy solo al lugar donde se hacen las entradas en los datos del Libro de Visitas. Pero esto definitivamente me hizo empezar de nuevo. Estoy esperando que si configuro la autenticación completamente que el problema no volverá.

Yo estaba recibiendo el mismo error, el error se fue después de reasignar la aplicación de back-end en la consola de la nube.

Descubrí que después de redistribuir una nueva versión se crea, en lugar de reseting el predeterminado. Al seleccionar esta nueva versión como 'predeterminado' todo funcionó como se esperaba.

Seleccione la instancia como predeterminada en (Principal / Versión):

 https://appengine.google.com/adminlogs?&app_id=<project_id> 

Compruebe en:

 https://<project_id>.appspot.com/_ah/api/explorer 

Aquí está la solución perfecta.

Inicie sesión en el motor de aplicaciones. Haga clic en Instances en el lado izquierdo. En la parte inferior derecha, verá una opción como "Apagar"

Haga clic en Apagar. (El apagado no es sólo apagado. Es un reinicio).

La instancia se inicia en 10-12 segundos. Nota: durante estos 10-12 segundos, el motor de aplicaciones no está accesible. Por lo tanto, si su aplicación está en vivo, su nube no funcionará durante estos 10-12 segundos.

Actualiza la página después de 10 segundos y asegúrate de ver la opción Apagar. Esto significa que se reinicia su instancia.

Ahora, vuelva a intentarlo y funcionará. Envíeme un correo electrónico a [email protected] si todavía tiene preguntas

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.