google engine deploy appengine app java google-app-engine google-cloud-datastore

deploy - ¿Cómo explorar el almacén de datos local de Java App Engine?



appengine web service (6)

Parece que no existe un equivalente del _ah / admin de Python App Engine para la implementación de Java de Google App Engine.

¿Hay alguna forma manual de navegar por el almacén de datos? ¿Dónde están los archivos que se encuentran en mi máquina? (Estoy usando el complemento de App Engine con Eclipse en OS X).


Abra el archivo /war/WEB-INF/appengine-generated/local_db.bin con un editor de texto, como Notepad ++.

Los datos están codificados, pero al menos puedes leerlos y puedes copiarlos para extraerlos.


Debido a que Google App Engines Datastore Viewer no admite mostrar colecciones de entidades referenciadas, modifiqué la versión de Paul para mostrar todas las entidades descendientes:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String entityParam = req.getParameter("e"); resp.setContentType("text/plain"); final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); // Original query final Query queryOrig = new Query(entityParam); queryOrig.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); for (final Entity entityOrig : datastore.prepare(queryOrig).asIterable()) { // Query for this entity and all its descendant entities and collections final Query query = new Query(); query.setAncestor(entityOrig.getKey()); query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); for (final Entity entity : datastore.prepare(query).asIterable()) { resp.getWriter().println(entity.getKey().toString()); // Print properties final Map<String, Object> properties = entity.getProperties(); final String[] propertyNames = properties.keySet().toArray(new String[properties.size()]); for(final String propertyName : propertyNames) { resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); } } } }

Cabe señalar que no se muestra nada para las colecciones vacías / entidades referenciadas.


En las versiones más recientes del SDK ( 1.7.6+ ), la parte de administración del servidor dev viene con su ubicación cambiada

Al analizar los registros de salida del servidor, podemos ver que está accesible en:

http://localhost:8000

Y el visor de Datastore :

http://localhost:8000/datastore

Parece bastante limpio, según las nuevas pautas de diseño de Google.


Tengo un almacén de datos local en mi entorno Windows + Eclipse en / war / WEB-INF / appengine-generated / local_db.bin

Por lo que yo entiendo, usa un formato interno llamado "búferes de protocolo". No tengo herramientas externas para presentar el archivo en formato legible para humanos.

Estoy usando un código simple de "visor" como este:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); final Query query = new Query("Table/Entity Name"); //query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.DESCENDING); for (final Entity entity : datastore.prepare(query).asIterable()) { resp.getWriter().println(entity.getKey().toString()); final Map<String, Object> properties = entity.getProperties(); final String[] propertyNames = properties.keySet().toArray( new String[properties.size()]); for(final String propertyName : propertyNames) { resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); } } }



Actualmente no hay un visor de almacenamiento de datos para el SDK de Java, uno debería aparecer en la próxima versión del SDK. Mientras tanto, la mejor opción es escribir su propia interfaz de administración con el código de visualización del almacén de datos, o esperar la próxima versión del SDK.

Java App Engine ahora tiene un visor de http://localhost:8080/_ah/admin datos local, accesible en http://localhost:8080/_ah/admin .