有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

servlet在java中处理客户端请求超时

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


共 (2) 个答案

  1. # 1 楼答案

    以下是一些建议:

    1)增加客户端超时时间

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

    3)在返回主响应之前,让服务器以中间“我正在处理”响应进行响应

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

  2. # 2 楼答案

    A client sends a request and catches a timeout exception. However the server is still processing the request

    让servlet生成一些输出(可以是空白),并每隔一段时间(例如每15秒)刷新一次流

    如果客户端的连接已关闭,则写操作将失败,并出现套接字异常

    Before that happening, the client already sent a second request which doubles the record on the database

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