我有很长的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>
.....
有什么想法吗?
谢谢,
谭
答案 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)
在不了解问题的情况下,我将采取以下方法:
用户点击链接生成Excel文件。显示一些消息代替链接,例如“正在处理...”
定期(可能每3秒)向服务器询问文件是否已生成,如果没有等待几秒钟再询问。
文件生成完成后,将“正在处理...”文本更改为文件“Download yourfile.xls”的链接,该文件已生成并存储在下载区域的服务器上。
这样浏览器就不会等待生成文件。