モジュールjava.net.http


モジュールjava.net.http
HTTPクライアントおよびWebSocket APIを定義します。

java.net.http APIで使用されるシステム・プロパティ

次に、JDKのjava.net.httpクライアント実装で使用されるシステム・ネットワーキング・プロパティのリストを示します。 数値を取る次のプロパティでは、数値として解析されない文字列が指定されている場合、デフォルト値が使用されます。 特に指定されていないかぎり、すべての値をconf/net.propertiesファイルに設定できます。 いずれの場合も、値をコマンド行でシステム・プロパティとして指定でき、その場合はconf/net.propertiesのすべての値がオーバーライドされます。 プロパティ値をSystem.setProperty()でプログラムで設定できるという保証はありません。 このAPIの他の実装では、これらのプロパティをサポートしないことを選択できます。

  • jdk.httpclient.allowRestrictedHeaders (default: 下記参照)
    ユーザーがHTTPリクエストまたはHttpRequestインスタンスのユーザー・コードで設定できる、通常は制限されているHTTPヘッダー名のカンマ区切りリスト。
    デフォルトでは、次のリクエスト・ヘッダーをユーザー・コードで設定することはできません: 接続、content-length、expect、hostおよびアップグレード。 この動作は、このプロパティを使用してオーバーライドできます。 名前の大文字と小文字は区別されず、空白は無視されます。 このプロパティはテスト用であり、実際のデプロイメント用ではないことに注意してください。 このプロパティを使用すると、プロトコル・エラーやその他の未定義の動作が発生する可能性があります。 コンテキストによっては、他のヘッダーの設定が制限される場合があります。 これらの制限は、このプロパティではオーバーライドできません。

  • jdk.httpclient.bufsize (デフォルト: 16384バイトまたは16KB)
    クライアントとの間でデータを渡すために割り当てられた内部エフェメラル・バッファの容量(バイト単位)。
    有効な値は[1、 2^14 (16384)]の範囲です。 無効な値が指定されている場合は、デフォルト値が使用されます。

  • jdk.httpclient.connectionPoolSize (デフォルト: 0)
    HTTP/1.1キープ・アライブ・キャッシュに保持する最大接続数。
    0を指定すると、キャッシュの制限がなくなります。

  • jdk.httpclient.connectionWindowSize (default: 2^26)
    HTTP/2クライアント接続ウィンドウ・サイズ(バイト)。
    有効な値は、[2^16-1, 2^31-1]の範囲です。 無効な値が指定されている場合は、デフォルト値が使用されます。 実装では、実際の値がストリーム・ウィンドウ・サイズよりも小さくなることが保証されます。ストリーム・ウィンドウ・サイズは、jdk.httpclient.windowsizeシステム・プロパティを使用して構成できます。

  • jdk.httpclient.disableRetryConnect (default: false)
    接続失敗の自動再試行が無効かどうか。
    falseの場合、再試行が試みられます(再試行制限に従います)。

  • jdk.httpclient.enableAllMethodRetry (default: false)
    べき等ではないHTTPリクエストを自動的に再試行できるかどうか。

  • jdk.httpclient.enablepush (デフォルト: 1)
    HTTP/2プッシュ・プロミスが有効かどうか。
    値1を指定するとプッシュ・プロミスが有効になります。値0を指定すると無効になります。

  • jdk.httpclient.hpack.maxheadertablesize (default: 16384または16 kB)
    HTTP/2クライアントの最大HPACKヘッダー表サイズ(バイト単位)。

  • jdk.httpclient.qpack.decoderMaxTableCapacity (デフォルト: 0)
    HTTP/3クライアントの最大QPACKデコーダの動的ヘッダー表サイズ(バイト)。

    この値を正の数に設定すると、HTTP/3サーバーはQPackデコーダの動的表にエントリを追加できます。
    0に設定すると、サーバーはクライアントのQPackエンコーダの動的テーブルにエントリを追加することが許可されません。

  • jdk.httpclient.qpack.encoderTableCapacityLimit (デフォルト: 4096、または4 kB)
    HTTP/3クライアントの最大QPACKエンコーダの動的ヘッダーテーブルサイズ(バイト単位)。

    この値を正の数に設定すると、HTTP/3クライアントのQPackエンコーダは、サーバーがそれを許可する場合、サーバーのQPackデコーダの動的テーブルにエントリを追加できます。

  • jdk.httpclient.HttpClient.log (default: none)
    「プラットフォーム・ロギングAPI」を使用して、様々なイベントの大まかなロギングを有効にします。
    値には、次のいずれかの項目のカンマ区切りリストが含まれます:

    • errors
    • requests
    • headers
    • content
    • frames
    • ssl
    • trace
    • channel
    • http3
    • ケツ

    次のアイテムのいずれかをコロンで区切ったリストを使用して、フレーム・アイテムを追加できます:
    • control
    • data
    • window
    • all

    次の項目のいずれかのコロン区切りのリストをquic項目に追加できます。パケットは、フレームのオフセットと長さのみを表示するが内容は表示しない、abridged形式で記録されます。
    • ack: ACKフレームを含むパケットがログに記録されます
    • cc: 輻輳制御の情報がログに記録されます
    • control: quicコントロールを含むパケット(フロー制御に影響するフレーム、開いているフレーム、閉じているストリームなど)が記録されます。
    • crypto: 暗号フレームを含むパケットがログに記録されます
    • data: ストリーム・フレームを含むパケットが記録されます。
    • dbb: 直接バイト・バッファ使用量に関する情報が記録されます。
    • ping: pingフレームを含むパケットがログに記録されます
    • 処理済: フロー制御に関する情報(処理済バイト)が記録されます
    • retransmit: パケット損失と回復に関する情報が記録されます。
    • timer: 送信タスクのスケジュール情報がログに記録されます
    • all

    項目を指定すると、HTTPクライアントのログに追加されます。
    たとえば、次の値を指定すると、プラットフォーム・ロギングAPIは、使用可能なすべてのHTTPクライアント・イベントをログに記録します:
    "errors,requests,headers,frames:control:data:window,ssl,trace,channel"
    control:data:windowをallに置換できることに注意してください。
    ロガーの名前は"jdk.httpclient.HttpClient"で、すべてのロギングはINFOレベルです。 quicプロトコルの問題をデバッグするには、まずquic:control:retransmitを指定します。

  • jdk.httpclient.keepalive.timeout (デフォルト: 30)
    キープ・アライブ・キャッシュでアイドル状態のHTTP接続を維持する秒数。
    デフォルトでは、このプロパティはHTTP/1.1、HTTP/2およびHTTP/3に適用されます。 HTTP/2およびHTTP/3の値は、それぞれjdk.httpclient.keepalive.timeout.h2およびjdk.httpclient.keepalive.timeout.h3プロパティでオーバーライドできます。 HTTP/2に指定された値は、HTTP/3のデフォルト値として機能します。

  • jdk.httpclient.keepalive.timeout.h2 (default: 下記参照)
    アイドル状態のHTTP/2接続を維持する秒数。
    設定されていない場合は、jdk.httpclient.keepalive.timeout設定が使用されます。

  • jdk.httpclient.keepalive.timeout.h3 (デフォルト: 次を参照)
    アイドル状態のHTTP/3接続を存続させる秒数。
    設定されていない場合は、jdk.httpclient.keepalive.timeout.h2設定が使用されます。

  • jdk.httpclient.maxframesize (default: 16384または16kB)
    HTTP/2クライアントの最大フレーム・サイズ(バイト単位)。
    サーバーはこれより大きいフレームを送信できません。

  • jdk.httpclient.maxLiteralWithIndexing (デフォルト: 512)
    クライアントがヘッダー・フィールド・セクション全体のデコード中にHPackまたはQPACKデコーダの動的表に追加するヘッダー・フィールド行の最大数(ヘッダー名と値のペア)。
    これは実装の制限にすぎません。 ピアがこの制限を超えるエンコーディングでフィールドセクションまたは一連のQPACK命令を送信すると、ProtocolExceptionが呼び出されます。 ゼロまたは負の値は、制限がないことを意味します。

  • jdk.httpclient.maxNonFinalResponses (デフォルト: 8)
    最後のレスポンスを受信する前に、クライアントがリクエスト/レスポンス・ストリームで受け入れる準備が整った暫定(non-final)レスポンスの最大数。
    暫定レスポンスは、[100, 199](両端を含む)の範囲のステータスを含むレスポンスです。 これは実装の制限にすぎません。 ピアが、最終レスポンスを送信する前にこの制限を超えるいくつかの暫定レスポンスを送信した場合、ProtocolExceptionが発生します。 ゼロまたは負の値は、制限がないことを意味します。

  • jdk.httpclient.maxstreams (デフォルト: 100)
    クライアントがサーバーを同時に開くことを許可するHTTP/2またはHTTP/3プッシュ・ストリームの最大数。

  • jdk.httpclient.receiveBufferSize (デフォルト: オペレーティング・システムのデフォルト)
    HTTPクライアントのソケット受信バッファ・サイズ(バイト単位)。
    ゼロ以下の値は無視されます。

  • jdk.httpclient.redirects.retrylimit (デフォルト: 5)
    リダイレクトまたはなんらかの理由で障害が発生した場合にHTTPリクエストを送信する最大試行回数。

  • jdk.httpclient.websocket.writeBufferSize (default: 16384または16kB)
    webソケット実装でソケット書込みに使用されるバッファ・サイズ。

  • jdk.httpclient.windowsize (default: 16777216または16 MB)
    HTTP/2クライアント・ストリームのウィンドウ・サイズ(バイト)。
    有効な値は、[2^14, 2^31-1]の範囲です。 無効な値が指定されている場合は、デフォルト値が使用されます。

  • jdk.httpclient.auth.retrylimit (デフォルト: 3)
    Basic認証フィルタが失敗した認証を再試行する試行回数。
    最初のリクエストは再試行にカウントされないため、認証の試行回数は再試行制限より常に1回大きくなります。

  • jdk.httpclient.sendBufferSize (デフォルト: オペレーティング・システムのデフォルト)
    HTTPクライアントのソケット送信バッファ・サイズ(バイト単位)。
    ゼロ以下の値は無視されます。

  • jdk.internal.httpclient.disableHostnameVerification (default: false)
    true (または空の文字列に設定)の場合、SSL証明書でのホスト名検証は無効になります。
    これはシステム・プロパティのみで、conf/net.propertiesでは使用できません。 テスト目的でのみ提供されます。

  • jdk.http.auth.proxying.disabledSchemes (default: conf/net.propertiesを参照してください)
    HTTPプロキシ用のHTTPクライアント実装で使用できないHTTP認証スキーム名のカンマ区切りリスト。

  • jdk.http.auth.tunneling.disabledSchemes (default: conf/net.propertiesを参照してください)
    HTTP CONNECTトンネリングでHTTPクライアント実装で使用できないHTTP認証スキーム名のカンマ区切りリスト。

  • jdk.http.maxHeaderSize (default: 393216または384kB)
    クライアントが受け入れられるように準備されているヘッダー・フィールド・セクションの最大サイズ。
    これは、圧縮されていないヘッダー名のサイズの合計と、圧縮されていないヘッダー値のサイズ、および各フィールド・セクション行のオーバーヘッド32バイトとして計算されます。 ピアがこのサイズを超えるフィールド・セクションを送信すると、ProtocolExceptionが呼び出されます。 これは、プロトコルのすべてのバージョンに適用されます。 ゼロまたは負の値は、制限がないことを意味します。

次のシステムプロパティーを使用して、HTTP/3に使用される QUIC Protocol実装の一部を構成できます。

  • jdk.httpclient.quic.receiveBufferSize (デフォルト: オペレーティング・システムのデフォルト)
    QUIC UDPクライアント・ソケット受信バッファ・サイズ(バイト単位)。
    ゼロ以下の値は無視されます。

  • jdk.httpclient.quic.sendBufferSize (デフォルト: オペレーティング・システムのデフォルト)
    QUIC UDPクライアント・ソケット送信バッファ・サイズ(バイト単位)。
    ゼロ以下の値は無視されます。

  • jdk.httpclient.quic.defaultMTU (デフォルト: 1200バイト)
    quic接続で使用されるデフォルトのMaximum Transmission Unit (MTU)サイズ。
    HTTP/3クライアントのデフォルトの実装はPath MTU Detectionを実装しませんが、このプロパティーで定義されたサイズまでの1-RTTパケットの送信を試みます。 より大きい値を指定すると、クライアントとサーバーが同じマシン上にある場合にアップロード・パフォーマンスが向上する可能性がありますが、ネットワーク上で使用すると、リカバリ不能なパケット損失が発生する可能性があります。 指定できる値は、[1200、 65527]の範囲です。 範囲外の値が指定されている場合は、最小デフォルト値が使用されます。

  • jdk.httpclient.quic.maxBytesInFlight (デフォルト: 16777216バイトまたは16MB)
    これは、quic輻輳コントローラが処理中に使用できる未確認のバイトの最大数です。
    この量に達すると、フライト中のパケットの一部が確認されるまで、新しいデータは送信されません。
    指定できる値は、[2^14、 2^24] (または[16kB、 16MB])の範囲です。
    範囲外の値を指定すると、範囲内の最も近い値に固定されます。

  • jdk.httpclient.quic.maxInitialData (デフォルト: 15728640バイト、または15MB)
    quic接続の初期フロー制御制限(バイト単位)。
    有効な値は[0、 2^60]の範囲です。 初期制限は、受信ウィンドウ・サイズの初期化にも使用されます。 16kB未満の場合、ウィンドウ・サイズは16kBに設定されます。

  • jdk.httpclient.quic.maxStreamInitialData (デフォルト: 6291456バイト、または6MB)
    quicストリームの初期フロー制御制限(バイト単位)。
    有効な値は[0、 2^60]の範囲です。 初期制限は、受信ウィンドウ・サイズの初期化にも使用されます。 16kB未満の場合、ウィンドウ・サイズは16kBに設定されます。

  • jdk.httpclient.quic.maxInitialTimeout (デフォルト: 30秒)
    これは、クライアントがサーバーからの応答を待機し、ConnectExceptionを発生させる前に最初のQuic INITIALパケットの再送信を続行する最大時間(秒)です。
    ターゲット・サーバーから受信した最初のINITIALパケットによって、このタイムアウトが解除されます。

モジュール・グラフ:
java.net.httpのモジュール・グラフjava.net.httpのモジュール・グラフ
導入されたバージョン:
11
  • パッケージ

    エクスポート
    パッケージ
    説明
    HTTPクライアントおよびWebSocket API