后台处理请求时间过长导致页面超时
2017-09-27 19:08
801 查看
项目中有个从页面发起的AJAX请求后台需要处理十分钟以上,这导致页面超时卡死,
为了解决这个问题,经讨论,我们采用后台异步处理,用到了spring的@Async,用法很简单。
首先在spring的xml配置文件中添加如下配置:
其次在需要异步执行的方法上添加@Async注解即可:
页面超时的问题解决了,但是异步方法什么时候执行完,
操作人员如果想知道进度或第一时间知道执行结果怎么办呢?
目前想到了三种解决方法:
一、异步方法执行完后,发送邮件给操作人;
二、实时查询后台执行的进度显示在页面;
三、异步方法执行完后,再在页面给一个提示。
我们采用的是第一种,至于每一种的具体实现,这里就不详述了。
流程图:
为了解决这个问题,经讨论,我们采用后台异步处理,用到了spring的@Async,用法很简单。
首先在spring的xml配置文件中添加如下配置:
xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"> <task:annotation-driven />
其次在需要异步执行的方法上添加@Async注解即可:
package async; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class MyController { @Resource MyService myService; @RequestMapping("/testAsync.do") @ResponseBody public Map<String, Object> testAsync(HttpServletRequest req){ Map<String, Object> resultMap = new HashMap<String, Object>(); String param = req.getParameter("param"); //调用异步执行的方法 myService.excuteAsync(param); resultMap.put("resultMsg", "异步处理中..."); return resultMap; } }
package async; import org.springframework.scheduling.annotation.Async; public class MyService { //需要异步处理的业务方法 @Async public void excuteAsync(String param){ // do something; } }
页面超时的问题解决了,但是异步方法什么时候执行完,
操作人员如果想知道进度或第一时间知道执行结果怎么办呢?
目前想到了三种解决方法:
一、异步方法执行完后,发送邮件给操作人;
二、实时查询后台执行的进度显示在页面;
三、异步方法执行完后,再在页面给一个提示。
我们采用的是第一种,至于每一种的具体实现,这里就不详述了。
流程图:
相关文章推荐
- tomcat处理请求导致页面出现ERR_CONNECTION_RESET错误解决方案
- 对过长的字符串,导致页面样式乱了的处理
- 页面请求 Waiting (TTFB) 时间过长
- 定时请求php 后台 AJAX 请求,在页面中倒计时,和显示刷新时间
- 网页加载的时候timing中的waiting时间过长导致页面加载过慢解决。
- [置顶] iOS使用AFN设置请求超时时间并做处理
- CDH 运行一段时间就提示:请求 Service Monitor 超时。这可能会导致页面响应缓慢。
- 判断页面的运行时间,如果过长就转到别的处理页面
- 登录请求超时,后台跳转登录页面时,是在子界面显示登录页面的问题
- web页面中按钮执行处理时间过长,添加div等待层
- Web页面实现后台数据处理进度与剩余时间的显示
- apache axis 框架处理https请求时超时时间设置问题
- 调用接口处理时间过长,前端访问超时解决方案
- 在用form 提交请求时,在请求处理完成后想要在JAVA后台设置返回信息状态展示到页面
- .net WCF 套接字连接中断,可能是由于消息处理错误,或者远程宿主接受超时引起,或者是底层网络资源问题导致,本地套接字时间
- ASP.NET 页面请求超时时间设置 Server.ScriptTimeout executionTimeout
- NodeJs http.get 方法请求时间过长问题处理!
- CDH报错:请求 Service Monitor 超时。这可能会导致页面响应缓慢。
- ajax请求时间过长页面等待提示框
- 记录-在jsp页面获取后台值在页面显示过长处理