【问题标题】:Stopping HTTP Request Timeout in Spring在 Spring 中停止 HTTP 请求超时
【发布时间】:2012-05-18 06:35:05
【问题描述】:

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

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

我怎样才能防止这种情况发生?

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

【问题讨论】:

  • 您从哪里获得超时,服务器还是浏览器?
  • 除了超时之外,您的应用程序还必须产生一些其他异常。请分享该异常和问题代码,以便所有人都能很好地理解您的问题并回答。
  • 浏览器超时。也不例外,因为报告最终会生成,但由于请求已经超时,因此不会推送到浏览器。
  • 超时前多久? 2分钟? 30 分钟?

标签: java spring tomcat servlets jasper-reports


【解决方案1】:

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

更清洁的解决方案是:

  • 通过一个 Ajax 请求开始生成报告(使用 spring 调度程序来安排立即执行)
  • 从浏览器轮询以检查报告的状态;完成后,提交报告。

【讨论】:

    【解决方案2】:

    我的猜测是您的会话将在 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 是否有任何错误消息。

    【讨论】:

    • boooo,谁在不发表评论的情况下讨厌我的回答。澄清一下,这个答案仅适用于使用 jasper 报告 UI 时的浏览器超时
    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多