ネットワークのプロパティ


Javaのプロパティ

java.net.preferIPv4Stack (デフォルト: false)
オペレーティング・システムでIPv6が利用できる場合、ベースとなるネイティブ・ソケットはIPv6ソケットになります。このため、Java(TM)アプリケーションは、IPv4ホストとIPv6ホストの両方に接続したり、その両方のホストからの接続を受け入れたりできます。

IPv4ソケットだけを使用するよう設定されているアプリケーションでは、このプロパティをtrueに設定できます。つまり、そのアプリケーションはIPv6ホストと通信できないということです。


java.net.preferIPv6Addresses (デフォルト: false)
オペレーティング・システムでIPv6が利用できる場合、デフォルトの設定では、IPv4マップ・アドレスがIPv6アドレスよりも優先されます。これは、下位互換性の理由によります。たとえば、IPv4専用のサービスへのアクセスに依存するアプリケーションや、%d.%d.%d.%d表現のIPアドレスに依存するアプリケーションとの互換性のためです。このプロパティをtrueに設定すると、IPv6アドレスをIPv4アドレスに優先して使用するように設定を変更できます。これにより、アプリケーションがIPv6サービスに接続されると予想される環境で、アプリケーションのテストおよび配備を行うことができます。

networkaddress.cache.ttl
java.securityで指定して、ネーム・サービスからの名前の検索に成功した場合のキャッシング・ポリシーを示します。指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。

-1の値は、「ずっとキャッシュする」という意味です。デフォルトでは、セキュリティ・マネージャがインストールされている場合はずっとキャッシュし、セキュリティ・マネージャがインストールされていない場合は実装固有の期間キャッシュします。


networkaddress.cache.negative.ttl (デフォルト: 10)
java.securityで指定して、ネーム・サービスからの名前の検索に失敗した場合のキャッシング・ポリシーを示します。指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。

0の値は、「キャッシュしない」という意味です。-1の値は、「ずっとキャッシュする」という意味です。


http.proxyHost (デフォルト: <なし>)
http.proxyPort (デフォルト: http.proxyHostが指定されている場合は80)
http.nonProxyHosts (デフォルト: <なし>)

ftp.proxyHost (デフォルト: <なし>)
ftp.proxyPort (デフォルト: ftp.proxyHostが指定されている場合は80)
ftp.nonProxyHosts (デフォルト: <なし>)
http.proxyHostとhttp.proxyPortは、HTTPプロトコル・ハンドラが使用するプロキシ・サーバーとポートを示します。

http.nonProxyHostsは、プロキシ・サーバー経由ではなく、直接接続すべきホストを示します。ホストのリストを指定することもできます。その場合は、それぞれのホストを「|」で区切ります。また、ワイルドカード文字(*)によるマッチングも指定できます。たとえば、-Dhttp.nonProxyHosts="*.example.com|localhost"です。

ftp.proxyHostとftp.proxyPortは、HTTPプロトコル・ハンドラが使用するプロキシ・サーバーとポートを示します。ftp.nonProxyHostsは、http.nonProxyHostsと同様、プロキシ・サーバー経由ではなく、直接接続すべきホストを示します。


http.agent (デフォルト: Java1.4.0)
HTTP要求に入れて送信されるUser-Agent要求ヘッダーを示します。

http.auth.digest.validateServer (デフォルト: false)
http.auth.digest.validateProxy (デフォルト: false)
http.auth.digest.cnonceRepeat (デフォルト: 5)
これらのシステム・プロパティは、HTTPダイジェスト認証メカニズムの動作を変更します。ダイジェスト認証は、サーバーがユーザー・パスワードを認識していることをクライアントに証明することによって、サーバー自体をクライアントに認証させるための限定された機能をサーバーに提供します。しかし、すべてのサーバーがこの機能をサポートするわけではありません。また、デフォルトではこのチェックはオフに設定されています。前述の最初の2つのプロパティをtrueに設定して、オリジン・サーバーまたはプロキシ・サーバーを使用した認証で、このチェックを強制することができます。

通常は、3つ目のプロパティ(http.auth.digest.cnonceRepeat)を設定する必要はありません。このプロパティは、cnonce値を再使用する回数を決定します。このプロパティは、MD5-sessアルゴリズムを使用する場合に役に立ちます。この値を増やすと、各HTTP要求のためにハッシュしなければならない情報の量が減るので、クライアントとサーバーの両方で計算のオーバーヘッドが減少します。


http.auth.ntlm.domain:
ほかのHTTP認証スキームと同様に、NTLMではjava.net.Authenticatorクラスを使用して、ユーザー名とパスワードを必要時に入手します。しかし、NTLMの場合はNTドメイン名も必要です。ドメインを指定するには、次の3つのオプションがあります。
  1. ドメインを指定しない。環境によっては、ドメインを実際に必要とせず、アプリケーションで指定する必要がない。
  2. ユーザー名の前にドメイン名+バックスラッシュ「\」を付けることで、ドメイン名をユーザー名内にエンコードする。この方法では、ユーザーがこの表記方法を使用しなければならないということを意識すれば、Authenticatorクラスを使用する既存のアプリケーションを変更する必要がない。
  3. ドメイン名を方法2)で指定せず、システム・プロパティ「http.auth.ntlm.domain」が定義されている場合、このプロパティの値がドメイン名として使用される。

http.keepAlive (デフォルト: true)
キープアライブ(持続)接続をサポートすべきかどうかを示します。持続接続を使用すると、複数のHTTP要求に対して再利用されるベースとなるのソケット接続を許可することによって、パフォーマンスが改善されます。

デフォルトはtrueで、HTTP 1.1サーバーで持続接続が使用されます。持続接続の使用を無効にするには、「false」を設定します。


http.maxConnections (デフォルト: 5)
HTTPキープアライブが有効な場合、この値は、宛先ごとに同時にキープアライブされるアイドル接続の数になります。

SOCKSプロトコル・サポートの設定

SOCKSユーザー名およびパスワードは次の方法で取得します。まず、アプリケーションがjava.net.Authenticatorのデフォルト・インスタンスを登録している場合、文字列「SOCKS5」に設定されたプロトコルと、文字列「SOCKS authentication」に設定されたプロンプトで、デフォルト・インスタンスがクエリーされます。オーセンティケータがユーザー名/パスワードを返さない場合や、オーセンティケータが登録されていない場合は、システムによってユーザー設定「java.net.socks.username」と「java.net.socks.password」が確認されます。これらの設定が存在しない場合は、システム・プロパティ「user.name」でユーザー名が確認されます。この場合、パスワードは指定されません。
socksProxyHost

socksProxyPort (デフォルト: 1080)
SOCKSプロトコル層で使用されるSOCKSプロキシ・サーバーの名前とポート番号を示します。socksProxyHostを指定した場合、すべてのTCPソケットは、接続を確立したり受け入れたりする際にSOCKSプロキシ・サーバーを使用します。SOCKSプロキシ・サーバーとしてはSOCKS v4またはv5サーバーのどちらも使用可能で、認証されない接続も可能である必要があります。
socksProxyVersion (デフォルト: 5)
サーバーでサポートされているSOCKSプロトコルのバージョン。デフォルトはSOCKS V5を示す5ですが、SOCKS V4を表す4も指定できます。これら以外の値にプロパティを設定すると、未指定の動作が発生します。

JDKの実装に固有のプロパティ

ここに列挙するプロパティは、将来のリリースでサポートされなくなる可能性があります。
sun.net.inetaddr.ttl
これは、Oracle JDKに固有のシステム・プロパティで、networkaddress.cache.ttlに対応します。プロパティの値と意味は同じですが、コマンド行オプションとして設定できる点が異なります。ただし、望ましいのは、前述の説明にあるセキュリティ・プロパティを使用する方法です。

sun.net.inetaddr.negative.ttl
これは、Oracle JDKに固有のシステム・プロパティで、networkaddress.cache.negative.ttlに対応します。プロパティの値と意味は同じですが、コマンド行オプションとして設定できる点が異なります。ただし、望ましいのは、前述の説明にあるセキュリティ・プロパティを使用する方法です。

sun.net.client.defaultConnectTimeout (デフォルト: -1)
sun.net.client.defaultReadTimeout (デフォルト: -1)
これらのプロパティでは、java.net.URLConnectionで使用されるプロトコル・ハンドラに対して、デフォルトの接続および読取りタイム・アウト(応答)を指定します。

sun.net.client.defaultConnectTimeoutは、ホストへの接続を確立する際のタイム・アウト(ミリ秒)を指定します。たとえば、HTTP接続の場合は、HTTPサーバーへの接続を確立する際のタイム・アウトのことです。FTP接続の場合は、FTPサーバーへの接続を確立する際のタイム・アウトのことです。

sun.net.client.defaultReadTimeoutは、リソースへの接続が確立されているときの、入力ストリームから読み取る際のタイム・アウト(ミリ秒)を指定します。


sun.net.http.retryPost (デフォルト: true)
成功しなかったHTTP POST要求がサーバーに自動的に再送信されるかどうかを決定します。この場合、「成功しなかった」とは、サーバーが有効なHTTP要求または発生したIOExceptionを送信しなかったことを意味します。

JNDI DNSサービス・プロバイダの設定

ここに列挙するプロパティは、将来のリリースでサポートされなくなる可能性があります。
sun.net.spi.nameservice.provider.<n>=<default|dns,sun|...>
使用できるネーム・サービス・プロバイダを指定します。デフォルトでは、Javaは、システムに構成された名前検索メカニズムを使用します(file、nisなど)。このオプションを設定すると、独自のものを指定できます。<n>には、正の数値を指定します。この数値は優先順位を示しており、小さい値ほど優先順位が高くなります。デフォルトのプロバイダとは別に、JDKには「dns,sun」という名前のDNSプロバイダが含まれています。

JDK 7より前は、正常にロードされた最初のプロバイダが使用されていました。JDK 7では、プロバイダは連鎖しています。これは、プロバイダでの検索が失敗した場合に、リスト内の次のプロバイダが名前を解決するために参照されることを意味します。


sun.net.spi.nameservice.nameservers=<server1_ipaddr,server2_ipaddr ...>
使用するDNSサーバーを指すIPアドレスを、カンマで区切ったリストとして指定できます。sun.net.spi.nameservice.nameserversプロパティが定義されていない場合、プロバイダでは、プラットフォームのDNS構成で構成済みのネーム・サーバーを使用します。

sun.net.spi.nameservice.domain=<domainname>
このプロパティでは、デフォルトのDNSドメイン名(たとえば、eng.example.com)を指定します。sun.net.spi.nameservice.domainプロパティが定義されていない場合、プロバイダでは、プラットフォームのDNS構成で構成済のドメインまたはドメイン検索リストが使用されます。

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.