モジュール java.net.http
パッケージ java.net.http

インタフェースHttpResponse.PushPromiseHandler<T>

  • 型パラメータ:
    T - プッシュ・プロ・ミス・レスポンス本文タイプ
    含まれているインタフェース:
    HttpResponse<T>

    public static interface HttpResponse.PushPromiseHandler<T>
    プッシュ・プロ・ミスのハンドラです。

    「プッシュ・プロ・ミス」は、クライアント固有のリクエストを開始するときにHTTP/2サーバーによって送信される合成リクエストです。 サーバーは、起動したリクエストを調査して決定されたため、クライアントは約束されたリソースを必要とする可能性があるため、プッシュ・プロ・ミスの形式でクライアントに統合プッシュ・リクエストをプッシュします。 クライアントは、プッシュ・プロ・ミス・リクエストを受け入れるか拒否するかを選択できます。

    プッシュ・プロ・ミス・リクエストは、開始クライアント側リクエストのレスポンス本文が完全に受信された時点まで受信されることがあります。 ただし、プッシュ・プロ・ミス・レスポンスの配信は、開始クライアント側リクエストへのレスポンスの配信と調整されません。

    導入されたバージョン:
    11
    • メソッドの詳細

      • applyPushPromise

        void applyPushPromise​(HttpRequest initiatingRequest,
                              HttpRequest pushPromiseRequest,
                              Function<HttpResponse.BodyHandler<T>,​CompletableFuture<HttpResponse<T>>> acceptor)
        受信プッシュ・プロ・ミスの通知。

        このメソッドは、受信したプッシュ・プロ・ミスごとに1回起動され、リクエストの開始側のレスポンス本文が完全に受信された時点まで呼び出されます。

        プッシュ・プロ・ミスは、指定されたacceptor関数を呼び出して受け入れます。 acceptor関数にnull以外のBodyHandlerを渡し、約束レスポンス本文の処理に使用する必要があります。 アクセプタ関数は、約束レスポンスで完了した CompletableFutureを返します。

        acceptor関数が正常に起動されないと、プッシュ・プロ・ミスは拒否されます。 acceptor関数は、複数回呼び出された場合にIllegalStateExceptionをスローします。

        パラメータ:
        initiatingRequest - クライアント開始リクエスト
        pushPromiseRequest - 統合プッシュ・リクエスト
        acceptor - プッシュ・プロ・ミスを受け入れるために正常に呼び出される必要のあるアクセプタ・ファンクション
      • of

        static <T> HttpResponse.PushPromiseHandler<T> of​(Function<HttpRequest,​HttpResponse.BodyHandler<T>> pushPromiseHandler,
                                                         ConcurrentMap<HttpRequest,​CompletableFuture<HttpResponse<T>>> pushPromisesMap)
        指定されたマップに、プッシュ・プロ・ミスおよびそのレスポンスを累積する、プッシュ・プロ・ミス・ハンドラを返します。

        受け入れられた各プッシュ・プロ・ミスの指定されたマップにエントリが追加されます。 エントリ・キーはプッシュ・リクエストであり、エントリ値は、キー・プッシュ・リクエストに対応するレスポンスで完了するCompletableFutureです。 マップにキーがequalであるエントリがすでに存在する場合、プッシュ・リクエストは拒否または取り消されます。 開始リクエストと同じ起点がない場合は、プッシュ・リクエストが拒否または取り消されます。

        プッシュ・プロ・ミスが受け取られて受け入れられると、できるだけ早く、指定されたマップにエントリが追加されます。 このようなキャッシュのようなマップを使用すると、プッシュ・プロ・ミスがサーバーによって発行されたかどうかを判別でき、不要なリクエストを回避できます。

        プッシュ・プロ・ミス・レスポンスの配信は、クライアント送信リクエストへのレスポンスの配信と調整されません。 ただし、クライアント開始リクエストのレスポンス本文が完全に受信されると、マップは完全に移入されていることが保証されます。つまり、これ以上のエントリは追加されません。 マップに含まれる個々のCompletableFuturesは、この時点で完了している場合と完了していない場合があります。

        型パラメータ:
        T - プッシュ・プロ・ミス・レスポンス本文タイプ
        パラメータ:
        pushPromiseHandler - プッシュ・プロ・ミスに使用する本文ハンドラ。
        pushPromisesMap - プッシュ・プロ・ミスを累計するマップ
        戻り値:
        プッシュ・プロ・ミス・ハンドラ