在Spring MVC中返回@Async方法结果,并将其返回给Ajax客户端
Return @Async method result in Spring MVC and return it to Ajax client
我有一些方法在我的控制器执行@Async
任务
@Async
public Future<String> getResultFromServer(){
String result = ......
return new AsyncResult<String>(result);
}
方法执行时间最长为10分钟。所有我需要做的就是返回结果到客户端,这将使用AJAX/JQuery连接。
我不希望客户端每秒钟请求我的服务器是否执行@Async
方法。我只是想保持我的连接打开,然后只是"推送"结果到服务器。
@RequestMapping(value="/async.do", method=RequestMethod.POST)
public void getResult(HttpServletResponse res){
String result = null;
PrintWriter out = res.getWriter();
Future<String> future = getResultFromServer();
try {
if (future.isDone())
result = future.get();
out.println(result);
out.close();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
我理解这与Comit模型非常接近,但我对彗星并不熟悉。
我的问题是如何在客户端使用JavaScript/JQuery保持连接打开?
和我的@RequestMapping(value="/async.do", method=RequestMethod.POST)
方法将结果推送到客户端吗?
最简单的方法是不以异步方式调用该方法,而是以同步方式直接从控制器调用它。
那么请求将需要"等待",直到计算出方法结果,并且它可以在创建后立即返回。
当然,这意味着,连接将打开多少时间来完成这项工作(1分钟)。
相关文章:
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- 如何从客户端的数组中获取用户输入和返回值
- SignalR返回到一个客户端,由控制器生成
- 从服务器返回exe文件,并通过浏览器在客户端下载
- 在代码隐藏 (asp.net VB) 中返回“完整”客户端 ID
- jQuery$.get从物理客户端站点返回403
- Node.js:REST客户端返回它之前的值's已返回
- Meteor 方法返回客户端和服务器上的不同对象
- 如何向客户端返回带有双引号的字符串?脚本将其解析为JSON对象
- RxJS:在每次返回并行http请求时更新客户端
- 将来自codeehind的值返回到客户端的jquery函数中
- 如何将客户端javascript返回值传递给ASP经典服务器端
- Facebook Javascript API调用返回需要appsecret_proff参数的错误,但这是客户端
- 在不使用集合的情况下将服务器端计算返回到客户端
- Meteor 方法返回未定义到客户端(异步)
- 使用 ElasticSearch javascript 客户端创建索引,promise 不会返回
- Meteor.methods:从内部回调将数据返回给客户端