Здається, немає еквівалента _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
Наскільки я зрозумів, він використовує внутрішній формат з назвою "буфери протоколів". У мене немає зовнішніх інструментів для подання файлу в зручному для читання форматі.
Я використовую простий код "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));
}
}
}
У найновіших версіях SDK ( 1.7.6+ ) адміністративна частина сервера розробників має змінене місце розташування
Аналізуючи журнали виводу сервера, ми можемо побачити, що він доступний за адресою:
http://localhost:8000
І програма перегляду Datastore :
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