データの返送を開始する前にTCP接続のタイムアウトを超える長時間実行タスク(レポート)があります。非同期サーブレット(サーブレット3.0で導入)はまさに私が必要としているものですが、私はサーブレットv2.4に制限されています。「自分でロール」するソリューションはありますか?私がしていることはハッキングされたように感じます-私はスレッドで非同期的にタスクを開始し、すぐにクライアントに戻ります。次に、クライアントは数秒ごとに(ajaxを使用して)ポーリングし、このタスクIDの「準備完了」ステータスをチェックします(静的リストは、スレッドによって処理されるオブジェクトのステータスと一部のハンドルを維持します)。準備ができたら、出力ストリームを作業オブジェクトに挿入して、スレッドが結果をクライアントに書き戻すことができるようにします。
質問する
159 次
1 に答える
1
リバース ajax 手法を実装できます。これは、何度もポーリングして応答を取得する代わりに、タスクが終了すると応答を取得することを意味します。DWR hereを使用してリバース ajax 手法を実装する簡単な解決策があります。ただし、静的リストの使用を維持する必要があります。バックグラウンド タスクのビジネス ロジックが複雑な場合は、ESB またはより洗練されたものを使用できます。
于 2012-06-05T15:44:03.990 に答える