似乎没有与Google App Engine的Java实现等效的Python App Engine的_ah / admin。
有没有可以浏览数据存储的手动方法?在我的机器上哪里可以找到文件?(我在OS X上将App Engine插件与Eclipse一起使用)。
Answers:
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-generation \ 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));
}
}
}
由于Google App Engines数据存储查看器不支持显示引用实体的集合,因此我修改了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));
}
}
}
}
应该注意的是,对于空集合/引用实体,什么也不显示。
对我来说,解决方法是使用以下gcloud
命令进行登录
gcloud auth application-default login