客户端发送请求并捕获超时异常。但是,服务器仍在处理请求并将其保存到数据库中。在此发生之前,客户已经发送了第二个请求,该请求使数据库上的记录增加了一倍。我如何防止这种情况发生?我正在使用Java Servlet和JavaScript。
一些建议: -
1)增加客户端超时。
2)使服务器更有效,因此可以更快地响应。
3)让服务器以中间体的"我正在处理"响应响应,然后再返回主要响应。
4)服务器是否需要在响应客户端响应客户端之前进行所有工作,还是可以将某些工作卸载到以后运行的单独过程?
客户端发送请求并捕获超时例外。但是,服务器仍在处理请求
使servlet生成一些输出(可以是空白的空间),并每隔一段时间冲洗流(例如每15秒)。
如果连接已在客户端关闭,则写入将失败,而套接字异常。
在此发生之前,客户已经发送了第二个请求,该请求将数据库上的记录加倍
使用数据库的原子性,例如,一个唯一的键。通过创建唯一记录(也许在某些"未完成"状态)来开始过程,如果记录已经存在,则会失败。