ดูเหมือนว่าจะไม่มี _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 : "ในที่สุดเซิร์ฟเวอร์แอป dev จะมีโปรแกรมดูข้อมูลเริ่มแอปของคุณในพื้นที่และชี้ เบราว์เซอร์เพื่อ* เพื่อตรวจสอบ "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-created \ 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+ ) ส่วนผู้ดูแลระบบของเซิร์ฟเวอร์ dev มาพร้อมกับเปลี่ยนตำแหน่ง
การวิเคราะห์บันทึกเอาต์พุตของเซิร์ฟเวอร์เราจะเห็นว่าสามารถเข้าถึงได้ที่:
http://localhost:8000
และโปรแกรมดูDatastore :
http://localhost:8000/datastore
ดูสวยเรียบร้อย - ตามแนวทางการออกแบบใหม่ของ Google
เนื่องจากโปรแกรมดู Google App Engines 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));
}
}
}
}
ควรสังเกตว่าไม่มีสิ่งใดปรากฏขึ้นสำหรับคอลเลกชันที่ว่างเปล่า / เอนทิตีที่อ้างอิง
เปิด\war\WEB-INF\appengine-generated\local_db.bin
ไฟล์ด้วยโปรแกรมแก้ไขข้อความเช่น Notepad ++
ข้อมูลมีสัญญาณรบกวน แต่อย่างน้อยคุณสามารถอ่านและคัดลอกเพื่อแยกข้อมูลได้
สำหรับฉันการแก้ไขคือทำการเข้าสู่ระบบโดยใช้gcloud
คำสั่งด้านล่าง
gcloud auth application-default login