2009-07-09 21 views
83

ऐसा लगता है कि Google App Engine के जावा कार्यान्वयन के लिए पाइथन ऐप इंजन के _ah/admin के बराबर नहीं है।स्थानीय जावा ऐप इंजन डेटास्टोर कैसे ब्राउज़ करें?

क्या कोई मैनुअल तरीका है जिसे मैं डेटास्टोर ब्राउज़ कर सकता हूं? मेरी मशीन पर फाइलें कहां मिलेंगी? (मैं ओएस एक्स पर ग्रहण के साथ ऐप इंजन प्लगइन का उपयोग कर रहा हूँ)।

उत्तर

6

मैं \ वेब-INF \ appengine-उत्पन्न \ local_db.bin

\ युद्ध पर मेरे Windows + ग्रहण पर्यावरण पर स्थानीय डेटासंग्रह है जहां तक ​​मैं इसे "प्रोटोकॉल बफ़र्स" नाम आंतरिक स्वरूप का उपयोग करता समझा। मेरे पास मानव-पठनीय प्रारूप में फ़ाइल प्रस्तुत करने के लिए बाहरी उपकरण नहीं हैं।

मैं इस तरह सरल "दर्शक" कोड का उपयोग कर रहा:

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)); 
     } 
    } 
} 
+0

कोड अच्छा है, लेकिन क्वेरी कन्स्ट्रक्टर के लिए पैरामीटर गलत है: तालिका सही नहीं है, यह इकाई का नाम है। अतिथि पुस्तक उदाहरण में यह "ग्रीटिंग" होगा जो पंक्ति है।मैंने कोशिश की, लेकिन काम नहीं कर रहा: अंतिम क्वेरी क्वेरी = नई क्वेरी ("गेस्टबुक/ग्रीटिंग"); एक और मुद्दा: आप अपने कोड के साथ तालिका के विभिन्न कुंजी/नामों की सामग्री कैसे दिखाते हैं? Guestbook1, gb2, आदि की तरह – Timo

39

वर्तमान में जावा एसडीके के लिए कोई डेटासंग्रह दर्शक नहीं है - एक अगले एसडीके विज्ञप्ति में आ जाना चाहिए। इस बीच, आपकी सबसे अच्छी शर्त डेटास्टोर देखने कोड के साथ अपना स्वयं का व्यवस्थापक इंटरफ़ेस लिखना है - या अगली एसडीके रिलीज के लिए प्रतीक्षा करें।

जावा ऐप इंजन में अब स्थानीय डेटास्टोर दर्शक है, जो http://localhost:8080/_ah/admin पर पहुंच योग्य है।

+0

यह अनावश्यक है - ऊपर dfrankow की पोस्ट देखें। –

+23

आपका मतलब ब्लॉग पोस्ट का लिंक है जिसे कई दिनों बाद पोस्ट किया गया था _after_ मैंने यह उत्तर पोस्ट किया है? 'पुराना' मैं स्वीकार करूंगा, लेकिन अनावश्यक और मतदान नीचे थोड़ा क्रूर है। –

+1

मैं सहमत हूं। उस समय अच्छा जवाब; अब पुराना – mcherm

110

http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html: "पर लंबे समय तक पिछले, देव appserver एक डेटा दर्शक है स्थानीय स्तर पर अपने अनुप्रयोग शुरू करें और इसे बाहर की जाँच करने के http://localhost:8888/_ah/adminhttp://localhost:8000/datastore * अपने ब्राउज़र को।।"

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)); 
      } 
     } 
    } 
} 

यह कार्य करना चाहिए:

के रूप में

* 1.7.7

+0

नया व्यवस्थापक इंटरफ़ेस अभी भी मूल डेटास्टोर एपीआई द्वारा बनाए गए प्रकार/इकाइयों के साथ काम नहीं कर रहा है। तो मुझे अभी भी अपने "दर्शक" की आवश्यकता है :) – Paul

+15

http: // localhost: 8888/_ah/admin मेरे लिए एक चैंप की तरह काम करता है (पोर्ट बंद हो गया है) - लेकिन मैं सिर्फ तुलना के लिए ऐपवांच को आज़माउंगा। –

+0

आपको बहुत बहुत धन्यवाद! एक दृढ़ता मुद्दे को डीबग करने के लिए मुझे वास्तव में इसकी आवश्यकता थी। – SunnyD

1

क्योंकि गूगल एप इंजन डेटास्टोर दर्शक संदर्भित संस्थाओं के संग्रह को प्रदर्शित करने का समर्थन नहीं करता, मैं सभी वंशज संस्थाओं प्रदर्शित करने के लिए पॉल के संस्करण संशोधित ध्यान दें कि रिक्त संग्रह/संदर्भित इकाइयों के लिए कुछ भी प्रदर्शित नहीं होता है।

+0

यह कोड आपकी सभी संस्थाओं और उनके बच्चों की संस्थाओं को देखता है, अगर बच्चे की संस्थाओं में बच्चे भी हैं तो क्या होगा? क्या यह कार्य रिकर्सन के रूप में चलाएगा? –

2

एसडीके (1.7.6+) देव सर्वर के व्यवस्थापक भाग के नवीनतम संस्करणों में आता है के साथ वह अपने स्थान

सर्वर उत्पादन लॉग हम देख सकते हैं कि यह कम से पहुँचा जा सकता है विश्लेषण कर रहा है बदल दिया है:

http://localhost:8000

और डेटास्टोर दर्शक:

http://localhost:8000/datastore

बहुत साफ दिखता है - Google की नई डिज़ाइन guidlines के अनुसार।

1

\war\WEB-INF\appengine-generated\local_db.bin फ़ाइल को टेक्स्ट एडिटर के साथ खोलें, जैसे नोटपैड ++।

डेटा खराब हो गया है लेकिन कम से कम आप इसे पढ़ सकते हैं और आप इसे निकालने के लिए प्रतिलिपि बना सकते हैं।

संबंधित मुद्दे