使用post rest API请求请求超时问题

时间:2013-09-18 10:20:46

标签: time request jersey

我的应用程序环境是Tomcat 7.0,JDK 1.7。我使用Jersey作为REST API。我们的一种post类型REST API请求处理时间超过3分钟,它只是大约时间,可能超过3分钟。然后,当我们的请求处理完成时,我们将响应发送回客户端。但是这里请求处理需要3分钟,所以我在客户端获得了请求时间,而且我没有从服务器得到任何响应,因为我期望成功响应

服务器上的请求处理如下:

启动请求

  1. 将详细信息插入到db表中[此过程需要花费时间,以秒为单位]
  2. 将文件复制到远程计算机服务器[此过程需要3分钟]
  3. 更新/激活文件[此过程需要几秒钟的时间]
  4. 向客户发送回复
  5. 结束请求处理

    以上所有流程都必须在交易中,因此我们无法删除上述任何流程,

    我们已经提高了流程第2步的最佳性能,只有当我们使用超过1 GB的文件请求时,才会发生这种情况。

    截至目前,对于临时解决方案,我们已经增加了在Apache服务器中配置的超时值。

    现在我正在寻找我的问题的解决方案,采用以下任何一种方法:

    1. 建议我可以解决我的问题的任何开发或实施策略,应该按照我的描述进行预期?
    2. 如何解决请求超时问题?
    3. 在响应完成后,寻找从服务器端通知客户端的解决方案?
    4. 寻找无法使用Jersey REST API实现关闭客户端和服务器之间连接的解决方案?
    5. 谢谢&问候 Yatin Baraiya

1 个答案:

答案 0 :(得分:1)

因为我认为用以下方法来解决我的问题。

解决我的问题的流程实施步骤

1.首次向服务器发送请求==========>服务器立即将响应发送给客户端并生成一些Id,并在同一进程中由其他线程启动长时间运行的进程。

2.在客户端首先接收第一个请求响应并等待几秒钟然后再次向服务器发送其他请求以进行长时间运行的进程检查状态====>服务器获取第二个请求并响应客户端关于长时间运行的响应状态的状态,发送进行中或已完成

3.如果客户得到回复:正在进行中

4.然后客户等待几秒钟再次发送状态检查请求===>服务器发送响应完成

5.如果客户得到回复:完成

  1. 然后它开始从队列中获取其他请求。 [当且仅当客户端获得完成状态并生成ID时才会启动下一个请求的过程]
  2. 这意味着我们从客户端管理事务,将多个请求发送到服务器并确认流程是否成功完成,然后我们开始处理下一个操作。

    通过上述方法我们得到了交易流程,让我知道是我解决上述问题的方法,是否足够或者此解决方案需要进行任何更改?