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

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

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

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

HTTP/2の場合、プッシュpromiseリクエストは、開始するクライアント送信リクエストのレスポンス本文が完全に受信された時点まで受信できます。 ただし、プッシュ・プロミス・レスポンスの配信は、開始クライアント側リクエストへのレスポンスの配信と調整されません。 これらは、applyPushPromise(HttpRequest, HttpRequest, Function)メソッドとともに提供されます。

HTTP/3の場合、プッシュpromiseは同様の方法で処理されます。ただし、同じリソース(リクエストURI、リクエスト・ヘッダーおよびレスポンス本文)のpromiseは複数回promiseできますが、applyPushPromise(HttpRequest, HttpRequest, PushId, Function)メソッドを介してサーバー(およびこのAPI)によって1回のみ配信されます。 同じリソースの後続のpromiseは、メソッドnotifyAdditionalPromise(HttpRequest, PushId)によってpromiseの通知のみを受信します。 これらの各通知には、同じHttpResponse.PushPromiseHandler.PushIdが提供されます。 また、HTTP/3プッシュpromiseは、単一の開始リクエストのコンテキストに制限されません。 同じプッシュpromiseを配信し、同じHTTP/3 (QUIC)接続内の複数のクライアントによって開始されたリクエストで通知できます。

導入されたバージョン:
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をスローします。

      このメソッドは、すべてのHTTP/2プッシュpromiseおよびすべてのHTTP/3プッシュpromiseの最初のpromiseに対して、デフォルトで呼び出されます。 applyPushPromise(HttpRequest, HttpRequest, PushId, Function)がオーバーライドされる場合、このメソッドはHTTP/3プッシュpromiseに対して直接呼び出されません。

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

      default void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, HttpResponse.PushPromiseHandler.PushId pushid, Function<HttpResponse.BodyHandler<T>, CompletableFuture<HttpResponse<T>>> acceptor)
      HTTP/3着信プッシュpromiseの最初の出現の通知。 (同じPushIdを持つ)同じリソースの後続のpromiseは、notifyAdditionalPromise(HttpRequest, PushId)を使用して通知されます。

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

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

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

      実装要件:
      デフォルトの実装は、applyPushPromise(HttpRequest, HttpRequest, Function)を呼び出します。 これにより、以前のリリースのPushPromiseHandlersは、HTTP/3プッシュpromiseを妥当な方法で処理できます。
      パラメータ:
      initiatingRequest - promiseが発生したクライアント・リクエスト
      pushPromiseRequest - サーバーからの約束されたHttpRequest
      pushid - 後続の通知にリンクできるPushId
      acceptor - プッシュ・プロミスを受け入れるために正常に呼び出される必要のあるアクセプタ・ファンクション
      導入されたバージョン:
      26
    • notifyAdditionalPromise

      default void notifyAdditionalPromise(HttpRequest initiatingRequest, HttpResponse.PushPromiseHandler.PushId pushid)
      追加のHTTP/3 Push Promiseごとに呼び出されます。 pushidは、約束を元の約束されたHttpRequestおよびHttpResponseにリンクします。 通常、追加のpromiseは、クライアントによって開始されたリクエストによって発生します。
      実装要件:
      このメソッドのデフォルト実装では何の処理も行われません。
      パラメータ:
      initiatingRequest - クライアントが開始したリクエストで、プッシュが発生した
      pushid - 以前に通知されたプッシュID
      導入されたバージョン:
      26
    • of

      指定されたマップに、プッシュ・プロミスおよびそのレスポンスを累積する、プッシュ・プロミス・ハンドラを返します。

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

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

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

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