处理java

时间:2017-02-21 09:26:20

标签: java servlets request timeout httprequest

客户端发送请求并捕获超时异常。但是,服务器仍在处理请求并将其保存到数据库。在此之前,客户端已经发送了第二个请求,该请求将数据库上的记录加倍。我该如何防止这种情况发生?我使用java servlets和javascript。

2 个答案:

答案 0 :(得分:0)

一些建议: -

1)增加客户端超时。

2)提高服务器效率,使其响应更快。

3)让服务器回复中间的“我正在处理它”响应,然后返回主响应。

4)服务器在响应客户端之前是否需要所有工作,或者可以将某些工作卸载到单独的进程以便以后运行?

答案 1 :(得分:0)

  

客户端发送请求并捕获超时异常。但是,服务器仍在处理请求

让servlet生成一些输出(可以只是空格)并经常刷新流(例如,每隔15秒)。

如果在客户端关闭连接,则写入将因套接字异常而失败。

  

在此之前,客户端已经发送了第二个请求,该请求将数据库中的记录加倍

使用数据库的原子性,例如,唯一键。通过创建唯一记录(可能处于某种“未完成”状态)来启动该过程,如果记录已经存在,它将失败。