Соединение с сервером прекращается с ICEFaces с длинным запросом - PullRequest
0 голосов
/ 10 июля 2009

У меня длинный HTTP-запрос (создание большого файла Excel - около 60 тыс. Записей или около того), выполнение которого занимает около 5 минут. Колесо со льдом показывает, что соединение не работает, и хотя файл готов на сервере, страница 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 ]

1 голос
/ 10 июля 2009

Кажется, для клиента тайм-аут! Попробуйте асинхронное создание с ответом ajax.

0 голосов
/ 21 июля 2009

Не зная больше о проблеме, вот подход, который я бы выбрал:

  1. Пользователь нажимает на ссылку, чтобы создать файл Excel. Вместо ссылки отобразить сообщение, например «Обработка ...»

  2. Периодически (возможно, каждые 3 секунды) спрашивайте сервер, был ли файл создан, если не подождите несколько секунд, и спрашивайте снова.

  3. Как только файл будет завершен, измените текст «Processing ...» на ссылку на файл «Download yourfile.xls», который был сгенерирован и сохранен на сервере в области загрузки.

Таким образом, браузер не застревает в ожидании создания файла.

0 голосов
/ 12 июля 2009

Попробуйте установить увеличенный размер буфера, чтобы избежать ненужного установления связи между клиентом / сервером.

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

web.xml

Вы найдете множество положительных отзывов от людей, которые резко повысили свои показатели JSF с помощью этого небольшого переключателя. Может быть, это поможет и в вашей ситуации?

...