2013-05-22 5 views
0

Je suis un nouveau venu dans App Engine et Java Development et j'essaie de recevoir un InputStream via Http Post et de le stocker dans Datastore.Écrire le flux HTTPServletRequest dans le magasin de données de Google App Engine

Pour tester cela, j'utilise la disponibilité d'un autre ordinateur et envoie 10 valeurs de disponibilité dans un flux.

Chaque fois que je teste cela, la machine devient la réponse avec un COUNT jusqu'à 10 et une valeur de temps de disponibilité. Mais la visionneuse Datastore n'a qu'un seul élément stocké. Qu'est-ce que je fais mal? Je ne pense pas que ce soit trop de données pour utiliser Memcache, même si c'est le meilleur moyen et je le ferai plus tard.

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    Entity uptime = new Entity("Uptime"); 

    BufferedReader buff = req.getReader(); 
    String line = buff.readLine(); 

    PrintWriter out = resp.getWriter();  

    int n = 0; 
    Date timestamp = new Date(); 

    while (line != null){ 
     uptime.setProperty("timestamp", timestamp); 
     uptime.setProperty("value", line); 
     datastore.put(uptime); 
     //Ouput for Debug purpose 
     out.println("COUNT: " + n + " LINE: " + line); 
     n++; 

     line = buff.readLine(); 
    } 
} 

Répondre

2

Vous ne créez pas un nouveau lorsque vous boucle objet Entity, en changeant simplement la propriété sur l'existant.

while (line != null){ 
    Entity uptime = new Entity("Uptime"); // remove the declaration/initialization from before, create a new every loop 
    uptime.setProperty("timestamp", timestamp); 
    uptime.setProperty("value", line); 
    datastore.put(uptime); 
    //Ouput for Debug purpose 
    out.println("COUNT: " + n + " LINE: " + line); 
    n++; 

    line = buff.readLine(); 
} 

Je ne suis pas sûr de savoir comment votre magasin de données identifie les objets (est-ce juste une carte, ce qui est l'ID d'objet, qu'est-ce que sa méthode equals() faire?), Mais il faut les distinguer de cette façon.

+0

Oh mon dieu. Donc sacrément facile et je ne pouvais pas le voir toute la journée. Merci beaucoup. Je vais certainement lire la documentation Datastore encore et encore. – gizmo

Questions connexes