1

HTTP コントローラー (Spring) がリクエストを取得し、ブロッキング呼び出しを行います。ブロッキング コールが終了すると、コントロールはコントローラに戻ります。

この時点で、クライアントに応答を返すのではなく、別のイベント (処理の完了など) が発生するのを待ちます。そのイベントが発生したらすぐに、イベントからデータを収集し、このデータを含む HTTP 応答を返す方法が必要です。

HTTPController doSomething( HTTPRequest ) 
{
    makeBlockingCall();  
    waitForEventToHappen();
    collectDataFromEvent();

    return HTTPResponse(); 

}
4

1 に答える 1

0

おそらく最終的にタイムアウトになり、それまで何かが起こっているというフィードバックを顧客に提供しないため、1 つの要求内からそれを行うことはありません。

代わりに、サーバーを非同期的に (おそらく AJAX ごとに) ポーリングして、結果が既に利用可能かどうかを確認するページをすぐに表示します。

したがって、最初のリクエストは、2 番目の (AJAX) リクエストで結果を検索するために使用される ID を返します。

于 2012-05-12T10:41:34.003 に答える