Как просмотреть локальное хранилище данных Java App Engine? - PullRequest
84 голосов
/ 09 июля 2009

Кажется, что нет эквивалента _ah / admin Python App Engine для реализации Java в Google App Engine.

Существует ли ручной способ просмотра хранилища данных? Где найти файлы на моем компьютере? (Я использую плагин App Engine с Eclipse на OS X).

Ответы [ 7 ]

111 голосов
/ 14 июля 2009

http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html: "В конце концов, у сервера приложений dev есть средство просмотра данных. Запустите приложение локально и наведите браузер на http://localhost:8888/_ah/admin http://localhost:8000/datastore*, чтобы проверить его."

* по состоянию на 1.7.7

40 голосов
/ 09 июля 2009

В настоящее время нет средства просмотра хранилища данных для Java SDK - оно должно появиться в следующем выпуске SDK. А пока лучше всего написать собственный интерфейс администратора с кодом просмотра хранилища данных или дождаться следующего выпуска SDK.

Java App Engine теперь имеет локальную программу просмотра хранилища данных, доступную по адресу http://localhost:8080/_ah/admin.

6 голосов
/ 09 июля 2009

У меня есть локальное хранилище данных в моей среде Windows + Eclipse на \ war \ WEB-INF \ appengine-генерируемый \ local_db.bin

Насколько я понял, он использует внутренний формат, называемый "буферы протокола". У меня нет внешних инструментов для представления файла в удобочитаемом формате.

Я использую простой код "просмотра", как этот:

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));
        }
    }
}
2 голосов
/ 14 апреля 2013

В новейших версиях SDK ( 1.7.6 + ) административная часть сервера dev поставляется с измененным местоположением

Анализируя выходные данные сервера, мы видим, что он доступен по адресу:

http://localhost:8000

И средство просмотра Datastore :

http://localhost:8000/datastore

Выглядит довольно аккуратно - в соответствии с новыми руководящими принципами дизайна Google.

1 голос
/ 16 ноября 2013

Откройте файл \war\WEB-INF\appengine-generated\local_db.bin в текстовом редакторе, таком как Notepad ++.

Данные зашифрованы, но по крайней мере вы можете их прочитать и скопировать, чтобы извлечь их.

1 голос
/ 20 августа 2012

Поскольку средство просмотра Google App Engine Datastore не поддерживает отображение коллекций связанных объектов, я изменил версию Пола для отображения всех дочерних объектов:

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));
            }
        }
    }
}

Следует отметить, что для пустых коллекций / ссылочных объектов ничего не отображается.

0 голосов
/ 25 декабря 2018

Для меня исправление состояло в том, чтобы выполнить вход в систему, используя ниже gcloud команду

gcloud auth application-default login
...