服务器连接因ICEFaces而长时间请求消失

时间:2009-07-10 16:45:20

标签: java jsf icefaces

我有很长的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>
 .....

有什么想法吗?

谢谢,

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

的web.xml

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

答案 2 :(得分:0)

在不了解问题的情况下,我将采取以下方法:

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

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

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

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