0

我有很长的 HTTP 请求(生成大型 Excel 文件 - 大约 60K 记录左右),这需要大约 5 分钟才能完成。带有icefaces的轮子显示连接已死,虽然文件已在服务器上准备好,但ICEFaces页面已死,我必须刷新它并且无法获取文件!如何延长超时我在 web.xml 中尝试了以下内容,但没有帮助:

代码 - Web.xml:

 .....
 <context-param>
         <param-name>blockingConnectionTimeout</param-name>
         <param-value>600000</param-value>
 </context-param>  
 <context-param>
         <param-name>synchronousUpdate</param-name>
         <param-value>false</param-value>
 </context-param>
 <context-param>
         <param-name>connectionTimeout</param-name>
         <param-value>600000</param-value>
 </context-param>
 <context-param>
         <param-name>heartbeatRetries</param-name>
         <param-value>20</param-value>
 </context-param>
 <context-param>
         <param-name>heartbeatInterval</param-name>
         <param-value>400000</param-value>
 </context-param>
 <context-param>
         <param-name>heartbeatTimeout</param-name>
         <param-value>2000000</param-value>
 </context-param>
 .....

有任何想法吗?

谢谢,

4

3 回答 3

1

似乎是客户端超时!尝试使用 ajax 响应进行异步创建。

于 2009-07-10T16:47:30.297 回答
0

尝试将缓冲区大小设置为增加的值,以防止客户端/服务器之间不必要的握手。

<context-param> 
  <param-name>facelets.BUFFER_SIZE</param-name>
  <param-value>500000</param-value>
</context-param>

web.xml

您会从那些通过这个小开关大幅提高 JSF 性能的人那里得到很多积极的反馈。也许它对你的情况也有帮助?

于 2009-07-12T10:23:47.770 回答
0

在不了解更多问题的情况下,这是我将采取的方法:

  1. 用户点击链接生成excel文件。显示一些消息来代替链接,例如“处理中...”

  2. 定期(可能每 3 秒)询问服务器文件是否已生成,如果没有,请等待几秒钟并再次询问。

  3. 文件生成完成后,将“Processing...”文本更改为“Download yourfile.xls”文件的链接,该文件已生成并存储在服务器上的下载区域中。

这样浏览器就不会等待文件生成。

于 2009-07-20T20:13:55.473 回答