Java 服务器连接因具有长请求的ICEFaces而终止

Java 服务器连接因具有长请求的ICEFaces而终止,java,jsf,icefaces,Java,Jsf,Icefaces,我有一个很长的HTTP请求(生成一个很大的Excel文件,大约60K条记录),需要5分钟才能完成。带有icefaces的控制盘显示连接已断开,尽管服务器上的文件已准备就绪,但icefaces页面已断开,我必须刷新它,无法获取该文件!如何延长超时时间我在web.xml中尝试了以下方法,但没有帮助: 代码-Web.xml: ..... <context-param> <param-name>blockingConnectionTimeout</pa

我有一个很长的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>
 .....
。。。。。
阻塞连接超时
600000
同步更新
假的
连接超时
600000
心脏病
20
心跳间隔
400000
心跳暂停
2000000
.....
有什么想法吗

谢谢


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

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

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

facelets.BUFFER\u大小
500000
web.xml

您将从使用这个小开关大幅提高JSF性能的人员那里找到许多积极的反馈。
也许这对你的情况也有帮助?

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

  • 用户单击链接生成excel文件。显示一些消息来代替链接,例如“正在处理…”

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

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


  • 这样,浏览器就不会在等待生成文件时卡住。

    是的,这是客户端超时。如何进行异步创建?请提供伪代码1。创建一个ajax请求,该请求使用唯一id执行excel文件处理。2。用微调器图标(或加载图标)替换请求按钮。如果您确定每次处理时间接近6分钟,请添加倒计时(约5,4分钟…)3。编写一个servlet,该servlet在文件处理成功时返回。(id作为参数)4。让开始处理的页面每隔X秒使用给定id调用这个“检查”servlet。如果复制成功,您可以提供指向显示文件的页面的链接。完成了;)没有更多的超时问题。