Java 数据存储中已更新实体的确认
我知道这是一个基本的问题,但我在任何地方都找不到答案,也不可能通过反复试验来解决。我有Android应用程序,想在+1之前更新数据存储中的实体。我将请求发送到谷歌应用程序引擎,在那里我获取实体,更新它+1,将实体放入数据存储,并使用Java 数据存储中已更新实体的确认,java,android,google-app-engine,datastore,Java,Android,Google App Engine,Datastore,我知道这是一个基本的问题,但我在任何地方都找不到答案,也不可能通过反复试验来解决。我有Android应用程序,想在+1之前更新数据存储中的实体。我将请求发送到谷歌应用程序引擎,在那里我获取实体,更新它+1,将实体放入数据存储,并使用response.getWriter().println(“OK”)向Android应用程序发送确认,一切都很好,但如果Android应用程序在发送请求后失去连接,Google应用程序引擎将收到更新entity+1的请求,但确认不会击中Android应用程序。即使我在
response.getWriter().println(“OK”)向Android应用程序发送确认代码>,一切都很好,但如果Android应用程序在发送请求后失去连接,Google应用程序引擎将收到更新entity+1的请求,但确认不会击中Android应用程序。即使我在Android应用程序中没有得到确认,实体是否会更新+1?如果是,预防这种情况的最佳做法是什么
提前谢谢
代码:
无论确认是否到达客户机,只要您告诉数据存储进行更新,实体就会立即更新
我不知道你为什么要阻止这一点(这是一个非常不寻常的要求),但解决方案将需要两个电话:一个是准备更改,另一个是提交更改。谢谢你的回答,所以“阻止”它的唯一可能是向Google app engine发送请求以获取实体,在Android应用程序中,生成+1并发送另一个请求将实体放入数据存储?或者是否有任何“更快”的方法,如if(response.getWriter().println(“OK”)!=fail){datastore.put(entity);}
在打印(“OK”)和该OK到达客户端之间存在时间间隔。这个差距比datastore.put(实体)和print(“OK”)之间的差距要大得多。我不知道你想完成什么。好的,我明白了。谢谢你的帮助。
public class Score extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String update = req.getParameter("update"); //update = 1
resp.getWriter().println(add(Integer.valueOf(update)));
}
public String add(int update) {
// ...
Entity entity = datastore.get(key);
int score = ((Number) entity.getProperty("Score")).intValue();
score += update;
entity.setProperty("Score", score);
datastore.put(entity);
return "OK";
}
}