Как просмотреть локальный хранилище Java App Engine?
Кажется, нет эквивалента Python App Engine _ah/admin для реализации Java в Google App Engine.
Есть ли способ ручной работы, который я могу просматривать в хранилище данных? Где находятся файлы на моей машине? (Я использую плагин App Engine с Eclipse в OS X).
Ответы
Ответ 1
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
Ответ 2
В настоящее время нет просмотра datastore для Java SDK - нужно идти в следующей версии SDK. В то же время лучше всего написать собственный интерфейс администратора с кодом просмотра хранилища данных - или дождаться следующего выпуска SDK.
В Java App Engine теперь есть локальный просмотрщик хранилища данных, доступный в http://localhost:8080/_ah/admin
.
Ответ 3
У меня есть локальное хранилище данных в моей среде Windows + Eclipse на \war\WEB-INF\appengine-generated\local_db.bin
Насколько я понял, он использует внутренний формат с именем "buffer buffers". У меня нет внешних инструментов для представления файла в удобочитаемом формате.
Я использую простой код "viewer" следующим образом:
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));
}
}
}
Ответ 4
В новейших версиях SDK (1.7.6+) административная часть сервера dev поставляется с измененным местоположением
Анализируя журналы вывода сервера, мы видим, что он доступен по адресу:
http://localhost:8000
И средство просмотра Datastore:
http://localhost:8000/datastore
Выглядит довольно аккуратно - согласно рекомендациям google new design.
Ответ 5
Поскольку программа просмотра приложений Google App Engine Datastore не поддерживает отображение наборов ссылочных объектов, я изменил версию Paul, чтобы отобразить все сущности-потомки:
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));
}
}
}
}
Следует отметить, что для пустых коллекций/ссылочных объектов ничего не отображается.
Ответ 6
Откройте файл \war\WEB-INF\appengine-generated\local_db.bin
с помощью текстового редактора, например Notepad ++.
Данные скремблируются, но по крайней мере вы можете прочитать их, и вы можете скопировать его, чтобы извлечь его.