从请求发出1分钟后,REST服务没有响应

时间:2018-11-04 16:26:39

标签: java rest tomcat service

我们的后端具有RESTful API,并且这项重要的服务需要1分钟以上的时间才能做出响应。

因此,大约90秒钟后,响应已准备就绪,过程已完成,但浏览器未从服务器获得任何响应(待处理),然后最终失败了(图像如下)。我已经用低数据测试了服务器,并批准只有在响应需要1分钟以上才能准备就绪时才会发生。我该如何解决这个问题?

Response failed after nothing happens

这是服务:

@POST
@Path("/search")
public Response hotelSearch(@RequestBody InputValues value) {
   /* sending request to several other API 
       retrieving data from PostgreSQL DB
       creating a big DTO

   */
    return Response.ok(DTO).build();
}

注意:我们正在使用apache-tomcat 9.0.8和JAVA 8! 导入的依赖项:

compile 'org.springframework:spring-web:4.3.6.RELEASE'
compile 'org.springframework:spring-orm:4.0.2.RELEASE'
compile 'org.springframework:spring-aspects:4.0.2.RELEASE'
compile 'org.springframework.security:spring-security-web:3.2.1.RELEASE'
compile 'org.springframework.security:spring-security-config:3.2.1.RELEASE'
compile 'org.springframework.security:spring-security-cas:3.2.1.RELEASE
compile 'org.glassfish.jersey.ext:jersey-spring3:2.6'

1 个答案:

答案 0 :(得分:1)

您可以立即返回带有HTTP 200 OK标头的HTTP 202 Accepted响应,而不是返回所有结果都返回的Location响应,客户端可以在其中返回结果内。

然后,客户端将使用Location方法轮询GET标头中的URL,直到所有结果准备就绪为止。

如果客户端未准备好就检索结果,则返回一个HTTP 404 Not Found响应,并可选地带有一个“ Retry-After”标头。

当客户端检索完成的结果时,只需返回一个HTTP 200 OK响应,并将所有结果显示在正文中。