2009-07-10 10 views
0

5分ほどかかるHTTP要求(長いExcelファイルの生成 - 約60Kレコード程度)があります。 ICEFacesのページは死んでいるので、リフレッシュする必要があり、ファイルを取得することはできません!どのようにタイムアウトを拡張については、私は、web.xmlに以下を試みたが、それは助けていませんでした:長いリクエストのあるICEFaceでサーバー接続が終了する

コード - の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> 
..... 

任意のアイデア?

おかげで、

タム

答えて

1

は、クライアントのタイムアウトしているようです! ajaxレスポンスで非同期作成を試みます。

+0

はいクライアントタイムアウトです。非同期作成の仕方疑似コード – Tam

+0

を提供してください。1.独自のIDでExcelファイル処理を行うajaxリクエストを作成します。 2.要求ボタンをスピナーアイコン(または読み込みアイコン)に置き換えます。処理時間が毎回ほぼ6分であることが確かな場合は、カウントダウンを追加してください(約5,4分...) 3.ファイル処理が成功した場合に返されるサーブレットを作成します。 (idをパラメータとして) 4.処理を開始するページから、指定されたidを持つこの「チェック」サーブレットをX秒ごとに呼び出します。処理が成功した場合、ファイルを表示するページへのリンクを提供することができます。 完了です;)タイムアウトの問題はこれ以上発生しません。 –

0

クライアント/サーバー間の不要なハンドシェイクを防ぐために、バッファサイズを増やしてください。

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

web.xmlの

あなたはこの小さなスイッチで大幅に彼らのJSF性能を高め、人々から肯定的なフィードバックをたくさん見つけることができます。 あなたの状況にも役立つでしょうか?

+0

コメントありがとう...私はそれが役に立たなかったことを試みた:( – Tam

0

問題の詳細を知らなくても、ここで私はかかるだろうなアプローチです:

  1. ユーザーは、Excelファイルを生成するためのリンクをクリックします。 "処理中"などのリンクの代わりにメッセージを表示してください。

  2. ファイルが生成されているかどうか定期的に(3秒ごとに)確認してください。

  3. ファイルの生成が完了したら、「処理中...」テキストを、ダウンロード領域のサーバーに生成され保存されているファイル「Download yourfile.xls」へのリンクに変更します。

このようにして、ブラウザがファイルの生成を待つことがなくなります。

関連する問題