1

我有一个 Grails 在 Tomcat 上的服务器上工作。这个应用程序是一个从 MySQL 服务器导出信息的 Web 界面。可以根据您所做的选择导出此信息,但需要一些时间。最大的部分或过程大约是 40 分钟。这是它需要从数据库中导出所有信息并压缩在一个 zip 文件中返回给用户的时间。

一切正常,但我们遇到了一位客户的问题。他们安装了某种代理,并且在 3 分钟不活动后关闭与服务器的连接,并且他无法导出任何内容,因为他可以选择导出的所有组合都需要更长的时间。

客户端,即 GSP 页面,在服务器端计算和创建压缩文件时不做任何事情,只是等待。我能做些什么来避免这种连接关闭?

这是接收客户端的消息:

网络错误 (tcp_error) 发生通信错误:"" 详细技术信息:URL:* *** 代理:fe0psg03 客户端地址:10.2.122.105 时间:[15/10/2012:15:41:40 GMT] 用户:DE \roklinne Web 服务器可能已关闭、太忙或遇到其他问题,使其无法响应请求。您可能希望稍后再试一次。

预先感谢您的支持,

4

1 回答 1

1

因为这个过程最多需要 40 分钟。我会考虑分拆一个任务并在后台运行它。

几个建议...

1) 只使用 Java 5 并发类(额外的工作很少)

2) JSR-166y 库为您提供方便的 Fork/Join 和并行数组抽象。

3) 后台线程 Grails 插件

在此之后,您可以有一个进度条,并为用户提供有关事情进展的最新信息。

于 2012-10-17T14:05:11.513 回答