Java 将HTTPServletRequest流写入Google App Engine的数据存储
我对AppEngine和Java开发非常陌生,我尝试通过HTTPPOST接收InputStream并将其存储到数据存储中 为了测试这一点,我使用另一台计算机的正常运行时间,并在一个流中发送10个正常运行时间值 每当我测试这一点时,机器就会变成一个计数高达10且正常运行时间值的响应。但是数据存储查看器只存储了一项。我做错了什么?我不认为这是太多的数据使用Memcache尚未,虽然这是更好的方式,我会做它以后Java 将HTTPServletRequest流写入Google App Engine的数据存储,java,google-app-engine,servlets,google-cloud-datastore,Java,Google App Engine,Servlets,Google Cloud Datastore,我对AppEngine和Java开发非常陌生,我尝试通过HTTPPOST接收InputStream并将其存储到数据存储中 为了测试这一点,我使用另一台计算机的正常运行时间,并在一个流中发送10个正常运行时间值 每当我测试这一点时,机器就会变成一个计数高达10且正常运行时间值的响应。但是数据存储查看器只存储了一项。我做错了什么?我不认为这是太多的数据使用Memcache尚未,虽然这是更好的方式,我会做它以后 public void doPost(HttpServletRequest req, Ht
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();
}
}
循环时,您没有创建新的
实体
对象,只是更改了现有实体的属性
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();
}
我不确定您的数据存储如何识别对象(它只是一个映射,对象id是什么,它的
equals()
方法做什么?),但它应该以这种方式区分对象。哦,我的上帝。这么简单,我一整天都看不见。谢谢。我一定会反复阅读数据存储文档。