在Spring中停止HTTP请求超时

时间:2012-05-18 06:35:05

标签: java spring tomcat servlets jasper-reports

我有一个应用程序,我正在从中生成Jasper Reports。但是当我提出生成报告的请求时,应用程序生成报告所花费的时间很长,因为报告的数据集非常大(~100K行)。

因此,在成功生成报告之前,HTTP请求会超时并且永远不会下载报告。

如何防止这种情况发生?

该应用程序是使用Spring 3.0,Hibernate和JasperReports构建的。

2 个答案:

答案 0 :(得分:0)

快速解决方案是为您的Http请求添加超时参数。

更清洁的解决方案是:

  • 使用一个Ajax请求启动报告生成(使用spring scheduler安排立即执行)
  • 从浏览器轮询以检查报告的状态;发现完成后,提交报告。

答案 1 :(得分:-1)

我的猜测是您的会话在20分钟后到期,请尝试修改tomcat6/webapps/jasperserver/WEB-INF/web.xml

<session-config>
    <!-- Default to 20 minute session timeouts -->
    <session-timeout>120</session-timeout>
</session-config>

还可以使用“在后台运行”(右键单击),这样可以像计划一样为您保存输出。

您可以检查tomcat6/webapps/jasperserver/WEB-INF/logs/jasperserver.log是否有任何错误消息。