ネットワーク・システム・プロパティ
次の3つの方法のいずれかで、次のネットワーク・システム・プロパティを設定できます:
- javaコマンドの
-D
オプションの使用 - System.setProperty(String, String)メソッドの使用
$JAVA_HOME/conf/net.properties
ファイルでの指定。このファイルで指定できるのは、プロキシ関連のプロパティのみです。
特に指定がないかぎり、プロパティ値は使用されるたびにチェックされます。
詳細は、Java SE API仕様のネットワーク・プロパティに関する項を参照してください。
IPv4およびIPv6プロトコル
これらの2つのプロパティは、起動時に1回のみチェックされます。
表10-1 IPv4およびIPv6プロトコルのプロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
java.net.preferIPv4Stack |
false |
IPv6を利用可能なオペレーティング・システムでは、ベースとなるネイティブ・ソケットは、デフォルトではIPv6ソケットです。これによりアプリケーションは、IPv4ホストとIPv6ホストの両方に接続したり、その両方のホストからの接続を受け入れたりできます。 アプリケーションでIPv4専用ソケットを使用する場合は、このプロパティを |
java.net.preferIPv6Addresses |
false |
IPv4アドレスとIPv6アドレスの両方を持つホストを扱う場合、IPv6を利用可能なオペレーティング・システムでは、IPv6アドレスよりもIPv4アドレスの使用を優先するのがデフォルトの動作です。これは、たとえば、IPv4アドレスの表現(192.168.1.1など)に依存するアプリケーションの下位互換性を確保するためです。 このプロパティを オペレーティング・システムによって返されるアドレスの順序を保持するには、このプロパティを |
HTTPプロキシ・プロパティ
次のプロキシ設定がHTTPプロトコル・ハンドラによって使用されます。
表10-2 HTTPプロキシ・プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
http.proxyHost |
デフォルト値なし | HTTPプロトコル・ハンドラが使用するプロキシ・サーバーです。 |
http.proxyPort |
80 |
HTTPプロトコル・ハンドラが使用するポートです。 |
http.nonProxyHosts |
localhost|127.*|[::1] |
プロキシを介さずにアクセスするホストを示します。通常これは内部ホストを定義します。このプロパティの値は、
デフォルト値には、ループバック・アドレスのあらゆる一般的なバリエーションが含まれません。 |
HTTPSプロキシ・プロパティ
HTTPS (HTTP over SSL)は、主に機密性が必要な場合に使用されるHTTPのセキュアなバージョンです(支払い用のWebサイトなど)。次のプロキシ設定がHTTPSプロトコル・ハンドラによって使用されます。
ノート:
HTTPSプロトコル・ハンドラは、HTTPプロトコルと同じhttp.nonProxyHosts
プロパティを使用します。
表10-3 HTTPSプロキシ・プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
https.proxyHost |
デフォルト値なし | HTTPSプロトコル・ハンドラが使用するプロキシ・サーバーです。 |
https.proxyPort |
443 | HTTPSプロトコル・ハンドラが使用するポートです。 |
FTPプロキシ・プロパティ
次のプロキシ設定がFTPプロトコル・ハンドラによって使用されます。
表10-4 FTPプロキシ・プロパティ
システム・プロパティ | デフォルト値 | 説明 |
---|---|---|
ftp.proxyHost |
デフォルト値なし | FTPプロトコル・ハンドラが使用するプロキシ・サーバーです。 |
ftp.proxyPort |
80 |
FTPプロトコル・ハンドラが使用するポートです。 |
ftp.nonProxyHosts |
localhost|127.*|[::1] |
デフォルト値には、ループバック・アドレスのあらゆる一般的なバリエーションが含まれません。 |
SOCKSプロキシ・プロパティ
SOCKSプロキシはTCPレベルで動作するため、低レベルのトンネリングが可能です。SOCKSプロキシ・サーバーを指定すると、他のプロキシが指定されていないかぎり、すべてのTCP接続がそのプロキシ・サーバーを通過します。次のプロキシ設定がSOCKSプロトコル・ハンドラによって使用されます。
表10-5 SOCKSプロキシ・プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
java.net.socks.username |
システム・プロパティuser.name の値 |
「SOCKSユーザー名およびパスワードの取得」を参照してください。 |
java.net.socks.password |
デフォルト値なし | 「SOCKSユーザー名およびパスワードの取得」を参照してください。 |
socksProxyHost |
デフォルト値なし | SOCKSプロトコル・ハンドラが使用するSOCKSプロキシ・サーバーです。 |
socksProxyPort |
1080 |
SOCKSプロトコル・ハンドラが使用するポートです。 |
socksProxyVersion |
5 |
サーバーでサポートされているSOCKSプロトコルのバージョン。デフォルトはSOCKS V5を示す5 ですが、SOCKS V4を表す4 も指定できます。これら以外の値にプロパティを設定すると、未指定の動作が発生します。
|
SOCKSユーザー名およびパスワードの取得
- まず、アプリケーションがjava.net.Authenticatorのデフォルト・インスタンスを登録している場合、文字列
SOCKS5
に設定されたプロトコルと、文字列SOCKS authentication
に設定されたプロンプトで、デフォルト・インスタンスを問い合せます。 - オーセンティケータがユーザー名/パスワードを返さない場合や、オーセンティケータが登録されていない場合は、システムによってプロパティ
java.net.socks.username
とjava.net.socks.password
の値がチェックされます。 - これらの値が存在しない場合は、システム・プロパティ
user.name
でユーザー名がチェックされます。この場合、パスワードは指定されません。
その他のプロキシ関連プロパティ
表10-6 その他のプロキシ関連プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
java.net.useSystemProxies |
false |
このプロパティは起動時に1回のみチェックされます。 |
http.KeepAlive.remainingData |
512 |
再利用できるように、基礎となるソケットから削除されるデータの最大量(KB)です。 |
http.KeepAlive.queuedConnections |
10 |
クリーンアップのためにキューに配置される最大キープ・アライブ接続数です。 |
jdk.http.auth.tunneling.disabledSchemes |
Basic |
HTTP CONNECTメソッドを使用してプロキシ経由でHTTPSをトンネリングするときに無効になる認証スキームをリストします。 このプロパティの値は、関連するRFCで定義されている、大/小文字を区別しない認証スキーム名のカンマ区切りリストです。スキームには、 |
jdk.http.auth.proxying.disabledSchemes |
デフォルト値なし |
HTTPのプロキシ時に無効になる認証スキームをリストします。 このプロパティの値は、関連するRFCで定義されている、大/小文字を区別しない認証スキーム名のカンマ区切りリストです。スキームには、 一部の環境では、HTTPまたはHTTPSのプロキシ時に特定の認証スキームが望ましくない場合があります。たとえば、 |
jdk.httpclient.allowRestrictedHeaders |
デフォルト値なし |
HttpRequestインスタンスのユーザー・コードで設定できるリクエスト・ヘッダーのカンマ区切りリストです。 デフォルトでは、リクエスト・ヘッダー 名前の大文字と小文字は区別されず、空白は無視されます。このプロパティはテスト用であり、実際のデプロイメント用ではないことに注意してください。このプロパティを使用すると、プロトコル・エラーやその他の未定義の動作が発生する可能性があります。コンテキストによっては、他のヘッダーの設定が制限される場合があります。これには、関連するHttpClientにオーセンティケータ・セットがある場合、認可ヘッダーが含まれます。これらの制限は、このプロパティではオーバーライドできません。 |
jdk.http.ntlm.transparentAuth |
disabled |
Windowsで透過的なNew Technology LAN Manager (NTLM) HTTP認証を有効にします。 NTLMスキームには透過的認証を使用できます。このスキームでは、現在ログインしているユーザーの名前とパスワードに基づくセキュリティ資格証明を、ユーザーにプロンプトを表示せずにオペレーティング・システムから直接取得できます。 このプロパティには、次の3つの値があります:
NTLMは厳密にセキュアな認証スキームではないため、有効にする前に注意してください。 |
jdk.net.unixdomain.tmpdir |
LinuxおよびmacOS: /tmp 、Windows: %TEMP%
|
自動的にバインドされたUNIXドメイン・サーバー・ソケットが格納されるデフォルト・ディレクトリです。詳細は、「UNIXドメイン・ソケットの一時ディレクトリ」を参照してください。 |
UNIXドメイン・ソケットの一時ディレクトリ
null
アドレス・パラメータを指定してServerSocketChannel.bindを呼び出すと、チャネルのソケットが自動的に割り当てられたソケット・アドレスにバインドされます。UNIXドメイン・ソケットの場合、これは事前定義されたシステムの一時ディレクトリ内の一意のパスを意味します。LinuxおよびmacOSでは、このディレクトリを決定する検索順序は次のとおりです:
- システム・プロパティ
jdk.net.unixdomain.tmpdir
(コマンドラインまたはSystem.setProperty(String, String)によって設定) $JAVA_HOME/conf/net.properties
ファイルに設定されている同じプロパティ- システム・プロパティ
java.io.tmpdir
Windowsでは、このディレクトリを決定する検索順序は次のとおりです:
- システム・プロパティ
jdk.net.unixdomain.tmpdir
(コマンドラインまたはSystem.setProperty(String, String)によって設定) %JAVA_HOME%\conf\net.properties
ファイルに設定されている同じプロパティTEMP
環境変数- システム・プロパティ
java.io.tmpdir
UNIXドメイン・ソケット・アドレスの長さは(プラットフォームによっては)約100バイトに制限されているため、一時ディレクトリの名前とソケットに使用されるファイル名がこの制限を超えないようにすることが重要です。
ノート:
クライアント・ソケットがbindを呼び出さずにリモート宛先に接続されている場合、ソケットは暗黙的にバインドされます。この場合、UNIXドメイン・ソケットの名前はありません(つまり、そのパスは空です)。この動作は、システムまたはネットワークのプロパティの影響を受けません。その他のHTTP URLストリーム・プロトコル・ハンドラのプロパティ
これらのプロパティは、起動時に1回のみチェックされます。
表10-7 その他のHTTP URLストリーム・プロトコル・ハンドラのプロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
http.agent |
Java/<version> |
HTTPリクエストのUser-Agentリクエスト・ヘッダーで送信される文字列を定義します。文字列Java/<version> は、プロパティで指定された文字列に追加されます。
たとえば、 |
http.auth.digest.validateServer |
false |
「HTTPダイジェスト認証メカニズムの動作を変更するシステム・プロパティ」を参照してください。 |
http.auth.digest.validateProxy |
false |
「HTTPダイジェスト認証メカニズムの動作を変更するシステム・プロパティ」を参照してください。 |
http.auth.digest.cnonceRepeat |
5 |
「HTTPダイジェスト認証メカニズムの動作を変更するシステム・プロパティ」を参照してください。 |
http.auth.ntlm.domain |
デフォルト値なし |
他のHTTP認証スキームと同様に、New Technology LAN Manager (NTLM)は、必要に応じてjava.net.Authenticatorクラスを使用してユーザー名とパスワードを取得します。しかし、NTLMの場合はNTドメイン名も必要です。ドメインを指定するには、次の3つのオプションがあります。
|
http.keepAlive |
true |
永続(キープ・アライブ)接続をサポートするかどうかを示します。これを使用すると、複数のHTTP要求に対して再利用されるベースとなるソケット接続を許可することによって、パフォーマンスが改善されます。これが 永続接続の使用を無効にするには、このプロパティを |
http.maxConnections |
5 |
HTTP永続接続(http.keepAlive プロパティを参照)が有効な場合、この値によって、宛先ごとに同時に保持されるアイドル接続の最大数が決まります。
|
HTTPダイジェスト認証メカニズムの動作を変更するシステム・プロパティ
システム・プロパティhttp.auth.digest.validateServer
およびhttp.auth.digest.validateProxy
は、HTTPダイジェスト認証メカニズムの動作を変更します。ダイジェスト認証は、サーバーがユーザーのパスワードを認識していることをクライアントに証明することによって、サーバー自体をクライアントに認証させるための限定された機能をサーバーに提供します。しかし、すべてのサーバーがこの機能をサポートするわけではありません。また、デフォルトではこのチェックはオフに設定されています。オリジンでの認証に対してこのチェックを強制するには、http.auth.digest.validateServer
をtrue
に設定し、プロキシ・サーバーでhttp.auth.digest.validateProxy
をtrue
に設定します。
通常、システム・プロパティhttp.auth.digest.cnonceRepeat
を設定する必要はありません。このプロパティは、cnonce値を再使用する回数を決定します。このプロパティは、MD5-sessアルゴリズムを使用する場合に役に立ちます。この値を増やすと、各HTTP要求のためにハッシュしなければならない情報の量が減るので、クライアントとサーバーの両方で計算のオーバーヘッドが減少します。
アドレス・キャッシュ・プロパティ
名前解決の実行時、java.net
パッケージはセキュリティ上とパフォーマンス上の両方の理由で、アドレス・キャッシュを使用します。アドレス解決の試行は、前方解決(名前からIPアドレスへ)でも逆方向の解決(IPアドレスから名前へ)でもすべて、成功であったかどうかを問わず結果がキャッシュされます。そのため、以後の同一の要求はネーム・サービスにアクセスする必要がなくなります。これらのプロパティを使用すると、アドレス・キャッシュの動作を調整できます。
表10-8 アドレス・キャッシュ・プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
networkaddress.cache.ttl |
-1 |
セキュリティ・マネージャがインストールされている場合のデフォルト値は |
networkaddress.cache.negative.ttl |
10 |
$JAVA_HOME/conf/security/java.security ファイルで指定され、ネーム・サービスからの失敗した名前検索のキャッシュ・ポリシーを示します。
値は、失敗した名前検索がキャッシュに保持される秒数に対応する整数です。 |