モジュール 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 - プッシュ・プロミスを累計するマップ
        戻り値:
        プッシュ・プロミス・ハンドラ