0

私は App Engine と Java 開発にかなり慣れていないので、Http Post を介して InputStream を受信し、それをデータストアに保存しようとしています。

これをテストするために、別のコンピューターからのアップタイムを使用し、1 つのストリームで 10 個のアップタイム値を送信します。

これをテストすると、マシンは最大 10 の COUNT と稼働時間の値を持つ応答になります。ただし、Datastore Viewer には 1 つのアイテムしか格納されていません。私は何を間違っていますか?これは Memcache を使用するのに十分なデータではないと思いますが、これはより良い方法であり、後で行う予定です。

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

1 に答える 1

2

Entityループするときに新しいオブジェクトを作成するのではなく、既存のオブジェクトのプロパティを変更するだけです。

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

Datastore がオブジェクトをどのように識別するかはわかりません (それは単なるマップですか、オブジェクト ID は何ですか、そのequals()メソッドは何をしますか?) が、この方法でそれらを区別する必要があります。

于 2013-05-22T13:26:52.670 に答える