Кажется, что нет эквивалента _ah / admin в Python App Engine для реализации Java для Google App Engine.
Есть ли ручной способ просмотра хранилища данных? Где файлы на моем компьютере? (Я использую плагин App Engine с Eclipse в OS X).
Кажется, что нет эквивалента _ah / admin в Python App Engine для реализации Java для Google App Engine.
Есть ли ручной способ просмотра хранилища данных? Где файлы на моем компьютере? (Я использую плагин App Engine с Eclipse в OS X).
Ответы:
http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html : "Наконец-то на сервере приложений для разработчиков есть средство просмотра данных. Запустите приложение локально и укажите свое браузер, чтобы * проверить это ".http://localhost:8888/_ah/admin
http://localhost:8000/datastore
* по состоянию на 1.7.7
В настоящее время нет программы просмотра хранилища данных для Java SDK - она должна появиться в следующем выпуске SDK. А пока лучше всего написать собственный интерфейс администратора с кодом просмотра хранилища данных - или дождаться следующего выпуска SDK.
Java App Engine теперь имеет средство просмотра локального хранилища данных, доступное по адресу http://localhost:8080/_ah/admin
.
У меня есть локальное хранилище данных в среде Windows + Eclipse на \ war \ WEB-INF \ appengine-generated \ 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));
}
}
}
В новейших версиях SDK ( 1.7.6+ ) административная часть dev-сервера изменила свое местоположение
Анализируя журналы вывода сервера, мы видим, что он доступен по адресу:
http://localhost:8000
И программа просмотра хранилища данных :
http://localhost:8000/datastore
Выглядит довольно аккуратно - согласно новым рекомендациям Google по дизайну.
Поскольку программа просмотра хранилища данных Google App Engines не поддерживает отображение коллекций ссылочных сущностей, я изменил версию Пола, чтобы отображать все дочерние сущности:
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));
}
}
}
}
Следует отметить, что для пустых коллекций / ссылочных сущностей ничего не отображается.
Откройте \war\WEB-INF\appengine-generated\local_db.bin
файл в текстовом редакторе, например Notepad ++.
Данные зашифрованы, но, по крайней мере, вы можете их прочитать и скопировать, чтобы извлечь.
Для меня исправление заключалось в том, чтобы войти в систему, используя gcloud
команду ниже
gcloud auth application-default login